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 2019/12/20 13:11:39 UTC
[syncope] 02/02: [SYNCOPE-1517] Initial changes
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
commit b33cc1415e4fa4b8953a27c789888b94fe185331
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Dec 20 14:11:19 2019 +0100
[SYNCOPE-1517] Initial changes
---
.../client/console/audit/AuditHistoryDetails.java | 127 +
.../console/audit/AuditHistoryDirectoryPanel.java | 241 +-
.../client/console/audit/AuditHistoryModal.java | 42 +-
.../client/console/audit/HistoryAuditDetails.java | 232 --
.../console/panels/AnyObjectDirectoryPanel.java | 93 +-
.../console/panels/AnyTypeClassDetailsPanel.java | 7 -
.../ConnInstanceHistoryConfDirectoryPanel.java | 229 --
.../client/console/panels/DirectoryPanel.java | 5 +-
.../client/console/panels/GroupDirectoryPanel.java | 79 +-
.../client/console/panels/HistoryConfDetails.java | 247 --
.../client/console/panels/HistoryConfList.java | 74 -
.../console/panels/LinkedAccountModalPanel.java | 6 +-
.../panels/ResourceHistoryConfDirectoryPanel.java | 230 --
.../client/console/panels/UserDirectoryPanel.java | 106 +-
.../console/policies/PolicyRuleDirectoryPanel.java | 3 -
.../console/policies/PolicyRuleWizardBuilder.java | 3 +-
.../policies/ProvisioningPolicyModalPanel.java | 3 +-
.../console/reports/ReportletDirectoryPanel.java | 3 -
.../console/reports/ReportletWizardBuilder.java | 3 +-
.../console/rest/AuditHistoryRestClient.java | 60 +-
.../console/rest/ConnectorHistoryRestClient.java | 50 -
.../console/rest/ResourceHistoryRestClient.java | 50 -
.../console/topology/TopologyTogglePanel.java | 88 +-
.../repeater/data/table/AjaxFallbackDataTable.java | 12 +-
.../wicket/markup/html/form/ActionLink.java | 1 -
.../wicket/markup/html/form/ActionsPanel.java | 12 +-
.../syncope/client/console/wizards/AjaxWizard.java | 3 +-
.../client/console/wizards/WizardMgtPanel.java | 4 +-
.../console/wizards/any/AnyObjectWrapper.java | 1 -
.../client/console/wizards/any/AnyWrapper.java | 1 -
...yAuditDetails.html => AuditHistoryDetails.html} | 8 +-
...s.properties => AuditHistoryDetails.properties} | 4 +-
...erties => AuditHistoryDetails_fr_CA.properties} | 6 +-
...roperties => AuditHistoryDetails_it.properties} | 6 +-
...roperties => AuditHistoryDetails_ja.properties} | 4 +-
...erties => AuditHistoryDetails_pt_BR.properties} | 4 +-
...roperties => AuditHistoryDetails_ru.properties} | 4 +-
.../console/audit/AuditHistoryModal.properties | 2 +-
...operties => AuditHistoryModal_fr_CA.properties} | 2 +-
.../console/audit/AuditHistoryModal_it.properties | 2 +-
.../console/audit/AuditHistoryModal_ja.properties | 2 +-
.../audit/AuditHistoryModal_pt_BR.properties | 2 +-
.../console/audit/AuditHistoryModal_ru.properties | 2 +-
.../audit/HistoryAuditDetails_it.properties | 19 -
.../client/console/panels/HistoryConfDetails.html | 29 -
.../console/panels/HistoryConfDetails.properties | 23 -
.../panels/HistoryConfDetails_fr_CA.properties | 23 -
.../panels/HistoryConfDetails_it.properties | 23 -
.../panels/HistoryConfDetails_ja.properties | 23 -
.../panels/HistoryConfDetails_pt_BR.properties | 23 -
.../panels/HistoryConfDetails_ru.properties | 23 -
.../client/console/panels/HistoryConfList.html | 23 -
.../console/panels/HistoryConfList.properties | 21 -
.../panels/HistoryConfList_fr_CA.properties | 21 -
.../console/panels/HistoryConfList_it.properties | 21 -
.../console/panels/HistoryConfList_ja.properties | 21 -
.../panels/HistoryConfList_pt_BR.properties | 21 -
.../console/panels/HistoryConfList_ru.properties | 21 -
.../markup/html/form/ActionsPanel.properties | 12 +-
.../markup/html/form/ActionsPanel_fr_CA.properties | 196 +-
.../markup/html/form/ActionsPanel_it.properties | 9 +-
.../markup/html/form/ActionsPanel_ja.properties | 11 +-
.../markup/html/form/ActionsPanel_pt_BR.properties | 15 +-
.../markup/html/form/ActionsPanel_ru.properties | 15 +-
.../syncope/common/lib/to/AbstractHistoryConf.java | 70 -
.../common/lib/to/ConnInstanceHistoryConfTO.java | 40 -
.../common/lib/to/ResourceHistoryConfTO.java | 39 -
.../common/lib/types/StandardEntitlement.java | 12 -
.../rest/api/service/ConnectorHistoryService.java | 82 -
.../rest/api/service/ResourceHistoryService.java | 82 -
.../syncope/core/logic/ConnectorHistoryLogic.java | 98 -
.../syncope/core/logic/ResourceHistoryLogic.java | 98 -
.../api/dao/ConnInstanceHistoryConfDAO.java | 36 -
.../api/dao/ExternalResourceHistoryConfDAO.java | 36 -
.../api/entity/ConnInstanceHistoryConf.java | 24 -
.../core/persistence/api/entity/HistoryConf.java | 41 -
.../resource/ExternalResourceHistoryConf.java | 25 -
.../src/main/resources/domains/MasterContent.xml | 11 +-
.../src/test/resources/domains/MasterContent.xml | 26 +-
.../persistence/jpa/dao/JPAConnInstanceDAO.java | 6 -
.../jpa/dao/JPAConnInstanceHistoryConfDAO.java | 71 -
.../jpa/dao/JPAExternalResourceDAO.java | 6 -
.../jpa/dao/JPAExternalResourceHistoryConfDAO.java | 71 -
.../jpa/entity/AbstractHistoryConf.java | 76 -
.../jpa/entity/JPAConnInstanceHistoryConf.java | 59 -
.../persistence/jpa/entity/JPAEntityFactory.java | 7 -
.../resource/JPAExternalResourceHistoryConf.java | 60 -
.../src/main/resources/domains/MasterContent.xml | 17 -
.../persistence/jpa/inner/PlainSchemaTest.java | 2 +-
.../jpa/outer/ConnInstanceHistoryConfTest.java | 74 -
.../jpa/outer/ResourceHistoryConfTest.java | 74 -
.../src/test/resources/domains/MasterContent.xml | 32 +-
.../api/data/ConnInstanceDataBinder.java | 5 -
.../provisioning/api/data/ResourceDataBinder.java | 4 -
.../java/data/ConnInstanceDataBinderImpl.java | 42 -
.../java/data/ResourceDataBinderImpl.java | 43 -
.../cxf/service/ConnectorHistoryServiceImpl.java | 49 -
.../cxf/service/ResourceHistoryServiceImpl.java | 49 -
core/upgrade/src/main/resources/schema.xml | 2537 +++++++++++---------
.../main/resources/domains/MasterContent.xml.all | 17 -
.../resources/domains/MasterContent.xml.myjson | 11 +-
.../resources/domains/MasterContent.xml.pgjsonb | 11 +-
.../org/apache/syncope/fit/AbstractITCase.java | 10 +-
.../syncope/fit/console/AbstractTypesITCase.java | 1 -
.../syncope/fit/console/AnyObjectsITCase.java | 2 +-
.../apache/syncope/fit/console/BatchesITCase.java | 10 +-
.../apache/syncope/fit/console/GroupsITCase.java | 4 +-
.../apache/syncope/fit/console/PoliciesITCase.java | 2 +-
.../apache/syncope/fit/console/UsersITCase.java | 8 +-
.../syncope/fit/core/AbstractTaskITCase.java | 4 +-
.../org/apache/syncope/fit/core/AuditITCase.java | 78 +-
.../syncope/fit/core/AuthenticationITCase.java | 6 +-
.../apache/syncope/fit/core/ConnectorITCase.java | 38 -
.../org/apache/syncope/fit/core/GroupITCase.java | 3 +-
.../syncope/fit/core/LinkedAccountITCase.java | 9 +-
.../apache/syncope/fit/core/MembershipITCase.java | 4 +-
.../syncope/fit/core/MultitenancyITCase.java | 2 +-
.../apache/syncope/fit/core/PullTaskITCase.java | 72 +-
.../apache/syncope/fit/core/PushTaskITCase.java | 28 +-
.../org/apache/syncope/fit/core/ReportITCase.java | 9 +-
.../apache/syncope/fit/core/SchedTaskITCase.java | 11 +-
.../apache/syncope/fit/core/UserIssuesITCase.java | 2 +-
.../apache/syncope/fit/core/UserSelfITCase.java | 12 +-
.../org/apache/syncope/fit/core/VirAttrITCase.java | 12 +-
.../concepts/externalresources.adoc | 15 -
.../configurationparameters.adoc | 4 -
126 files changed, 2227 insertions(+), 4818 deletions(-)
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDetails.java
new file mode 100644
index 0000000..cf37124
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDetails.java
@@ -0,0 +1,127 @@
+/*
+ * 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.client.console.audit;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.Date;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.JsonDiffPanel;
+import org.apache.syncope.common.lib.to.AbstractAnnotatedBean;
+import org.apache.syncope.common.lib.to.AuditEntryTO;
+import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.Model;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class AuditHistoryDetails<T extends EntityTO> extends MultilevelPanel.SecondLevel {
+
+ private static final long serialVersionUID = -7400543686272100483L;
+
+ private static final Logger LOG = LoggerFactory.getLogger(AuditHistoryDetails.class);
+
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+
+ private static final String KEY_CURRENT = "current";
+
+ public AuditHistoryDetails(
+ final MultilevelPanel mlp,
+ final AuditEntryTO selected,
+ final T currentEntity,
+ final String auditRestoreEntitlement,
+ final PageReference pageRef) {
+
+ super();
+
+ AuditEntryTO current = new AuditEntryTO();
+ current.setKey(KEY_CURRENT);
+ if (currentEntity instanceof AbstractAnnotatedBean) {
+ current.setWho(((AbstractAnnotatedBean) currentEntity).getCreator());
+ current.setDate(((AbstractAnnotatedBean) currentEntity).getCreationDate());
+ } else {
+ current.setWho(SyncopeConsoleSession.get().getSelfTO().getUsername());
+ current.setDate(new Date());
+ }
+ try {
+ current.setBefore(MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(currentEntity));
+ } catch (JsonProcessingException e) {
+ LOG.error("While serializing current entity", e);
+ throw new WicketRuntimeException(e);
+ }
+
+ add(new Label("current", getString("current")));
+ add(new Label("previous", getString("previous")));
+
+ @SuppressWarnings("unchecked")
+ Class<T> reference = (Class<T>) currentEntity.getClass();
+ add(new JsonDiffPanel(null, toJSON(current, reference), toJSON(selected, reference), null) {
+
+ private static final long serialVersionUID = 2087989787864619493L;
+
+ @Override
+ public void onSubmit(final AjaxRequestTarget target) {
+ modal.close(target);
+ }
+ });
+
+ AjaxLink<Void> restore = new AjaxLink<Void>("restore") {
+
+ private static final long serialVersionUID = -817438685948164787L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ restore(currentEntity, target);
+
+ mlp.prev(target);
+ }
+ };
+ MetaDataRoleAuthorizationStrategy.authorize(restore, RENDER, auditRestoreEntitlement);
+ add(restore);
+ }
+
+ protected abstract void restore(T entity, AjaxRequestTarget target);
+
+ private Model<String> toJSON(final AuditEntryTO auditEntry, final Class<T> reference) {
+ try {
+ String content = auditEntry.getBefore() == null
+ ? MAPPER.readTree(auditEntry.getOutput()).get("entity").toPrettyString()
+ : auditEntry.getBefore();
+
+ T entity = MAPPER.readValue(content, reference);
+ if (entity instanceof UserTO) {
+ UserTO userTO = (UserTO) entity;
+ userTO.setPassword(null);
+ userTO.setSecurityAnswer(null);
+ }
+
+ return Model.of(MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(entity));
+ } catch (Exception e) {
+ LOG.error("While (de)serializing entity {}", auditEntry, e);
+ throw new WicketRuntimeException(e);
+ }
+ }
+}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDirectoryPanel.java
index 62bb700..ee2066e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDirectoryPanel.java
@@ -18,49 +18,30 @@
*/
package org.apache.syncope.client.console.audit;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.Date;
import java.util.Iterator;
import java.util.List;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.audit.AuditHistoryDirectoryPanel.AuditHistoryProvider;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.commons.DirectoryDataProvider;
-import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
import org.apache.syncope.client.console.panels.DirectoryPanel;
import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.MultilevelPanel;
-import org.apache.syncope.client.console.rest.AnyObjectRestClient;
import org.apache.syncope.client.console.rest.AuditHistoryRestClient;
-import org.apache.syncope.client.console.rest.GroupRestClient;
-import org.apache.syncope.client.console.rest.UserRestClient;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.common.lib.AnyOperations;
-import org.apache.syncope.common.lib.patch.AnyObjectPatch;
-import org.apache.syncope.common.lib.patch.GroupPatch;
-import org.apache.syncope.common.lib.patch.UserPatch;
-import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.syncope.common.lib.to.AuditEntryTO;
-import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.lib.to.ProvisioningResult;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
@@ -68,92 +49,54 @@ import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.StringResourceModel;
-public class AuditHistoryDirectoryPanel extends
- DirectoryPanel<AuditEntryTO, AuditEntryTO, AuditHistoryProvider, AuditHistoryRestClient>
+public abstract class AuditHistoryDirectoryPanel<T extends EntityTO> extends DirectoryPanel<
+ AuditEntryTO, AuditEntryTO, AuditHistoryDirectoryPanel<T>.AuditHistoryProvider, AuditHistoryRestClient>
implements ModalPanel {
private static final long serialVersionUID = -8248734710505211261L;
- private static final int TOTAL_AUDIT_HISTORY_COMPARISONS = 25;
+ private static final List<String> EVENTS = Arrays.asList("create", "update");
- protected static final ObjectMapper MAPPER = new ObjectMapper();
+ private static final SortParam<String> REST_SORT = new SortParam<>("event_date", false);
private final BaseModal<?> baseModal;
- private final MultilevelPanel multiLevelPanelRef;
+ private final MultilevelPanel mlp;
- private final AnyTO anyTO;
+ private final AuditElements.EventCategoryType type;
- private final AnyTypeKind anyTypeKind;
+ private final String category;
+
+ private final T entity;
+
+ private final String auditRestoreEntitlement;
public AuditHistoryDirectoryPanel(
final BaseModal<?> baseModal,
- final MultilevelPanel multiLevelPanelRef,
- final PageReference pageRef,
- final AnyTO anyTO) {
+ final MultilevelPanel mlp,
+ final AuditElements.EventCategoryType type,
+ final String category,
+ final T entity,
+ final String auditRestoreEntitlement,
+ final PageReference pageRef) {
super(MultilevelPanel.FIRST_LEVEL_ID, pageRef);
disableCheckBoxes();
this.baseModal = baseModal;
- this.multiLevelPanelRef = multiLevelPanelRef;
- this.anyTO = anyTO;
- this.anyTypeKind = AnyTypeKind.fromTOClass(anyTO.getClass());
+ this.mlp = mlp;
+ this.type = type;
+ this.category = category;
+ this.entity = entity;
+ this.auditRestoreEntitlement = auditRestoreEntitlement;
+ this.pageRef = pageRef;
this.restClient = new AuditHistoryRestClient();
initResultTable();
}
- /**
- * Restore an object based on the audit record.Note that for user objects, the original audit record masks
- * the password and the security answer; so we cannot use the audit record to resurrect the entry based on mask
- * data.
- *
- * The method behavior below will reset the audit record such that the current security answer and the password for
- * the object are always maintained, and such properties for the user cannot be restored using audit records.
- *
- * @param json the object from audit
- * @param anyTO the any to
- * @return the response
- * @throws JsonProcessingException if json value cannot be parsed
- */
- protected ProvisioningResult<? extends AnyTO> restore(final String json, final AnyTO anyTO)
- throws JsonProcessingException {
-
- if (anyTO instanceof UserTO) {
- UserTO userTO = MAPPER.readValue(json, UserTO.class);
- UserPatch userPatch = AnyOperations.diff(userTO, anyTO, false);
- userPatch.setPassword(null);
- userPatch.setSecurityAnswer(null);
- return new UserRestClient().update(anyTO.getETagValue(), userPatch);
- }
- if (anyTO instanceof GroupTO) {
- GroupTO groupTO = MAPPER.readValue(json, GroupTO.class);
- GroupPatch groupPatch = AnyOperations.diff(groupTO, anyTO, false);
- return new GroupRestClient().update(anyTO.getETagValue(), groupPatch);
- }
- if (anyTO instanceof AnyObjectTO) {
- AnyObjectTO anyObjectTO = MAPPER.readValue(json, AnyObjectTO.class);
- AnyObjectPatch anyObjectPatch = AnyOperations.diff(anyObjectTO, anyTO, false);
- return new AnyObjectRestClient().update(anyTO.getETagValue(), anyObjectPatch);
- }
- throw new UnsupportedOperationException("Restore not supported for " + anyTO.getClass().getName());
- }
-
- private static SortParam<String> getSortParam() {
- return new SortParam<>("event_date", false);
- }
-
- private static AuditElements.Result getQueryableAuditResult() {
- return AuditElements.Result.SUCCESS;
- }
-
- private static List<String> getQueryableAuditEvents() {
- return Arrays.asList("create", "update");
- }
-
@Override
- protected AuditHistoryDirectoryPanel.AuditHistoryProvider dataProvider() {
+ protected AuditHistoryDirectoryPanel<T>.AuditHistoryProvider dataProvider() {
return new AuditHistoryProvider(rows);
}
@@ -164,20 +107,19 @@ public class AuditHistoryDirectoryPanel extends
@Override
protected List<IColumn<AuditEntryTO, String>> getColumns() {
- final List<IColumn<AuditEntryTO, String>> columns = new ArrayList<>();
- columns.add(new PropertyColumn<>(
- new StringResourceModel("who", this), "who"));
- columns.add(new DatePropertyColumn<>(
- new StringResourceModel("date", this), null, "date"));
+ List<IColumn<AuditEntryTO, String>> columns = new ArrayList<>();
+ columns.add(new PropertyColumn<>(new StringResourceModel("who", this), "who"));
+ columns.add(new DatePropertyColumn<>(new StringResourceModel("date", this), null, "date"));
return columns;
}
@Override
- protected void resultTableCustomChanges(
- final AjaxDataTablePanel.Builder<AuditEntryTO, String> resultTableBuilder) {
- resultTableBuilder.setMultiLevelPanel(baseModal, multiLevelPanelRef);
+ protected void resultTableCustomChanges(final AjaxDataTablePanel.Builder<AuditEntryTO, String> resultTableBuilder) {
+ resultTableBuilder.setMultiLevelPanel(baseModal, mlp);
}
+ protected abstract void restore(T entity, AjaxRequestTarget target);
+
@Override
protected ActionsPanel<AuditEntryTO> getActions(final IModel<AuditEntryTO> model) {
final ActionsPanel<AuditEntryTO> panel = super.getActions(model);
@@ -189,48 +131,27 @@ public class AuditHistoryDirectoryPanel extends
@Override
public void onClick(final AjaxRequestTarget target, final AuditEntryTO modelObject) {
AuditHistoryDirectoryPanel.this.getTogglePanel().close(target);
- viewAuditHistory(modelObject, target);
- target.add(modal);
- }
- }, ActionLink.ActionType.VIEW, StandardEntitlement.AUDIT_READ);
- final String auditRestoreEntitlement;
- switch (this.anyTypeKind) {
- case USER:
- auditRestoreEntitlement = StandardEntitlement.USER_UPDATE;
- break;
- case GROUP:
- auditRestoreEntitlement = StandardEntitlement.GROUP_UPDATE;
- break;
- default:
- auditRestoreEntitlement = StandardEntitlement.ANYTYPE_UPDATE;
- break;
- }
+ mlp.next(
+ new StringResourceModel("audit.diff.view", AuditHistoryDirectoryPanel.this).getObject(),
+ new AuditHistoryDetails<T>(
+ mlp,
+ modelObject,
+ entity,
+ auditRestoreEntitlement,
+ pageRef) {
- panel.add(new ActionLink<AuditEntryTO>() {
+ private static final long serialVersionUID = -5311898419151367494L;
- private static final long serialVersionUID = -6745431735457245600L;
+ @Override
+ protected void restore(final T entity, final AjaxRequestTarget target) {
+ AuditHistoryDirectoryPanel.this.restore(entity, target);
+ }
+ }, target);
- @Override
- public void onClick(final AjaxRequestTarget target, final AuditEntryTO modelObject) {
- try {
- AuditHistoryDirectoryPanel.this.getTogglePanel().close(target);
-
- String json = modelObject.getBefore() == null
- ? MAPPER.readTree(modelObject.getOutput()).get("entity").toPrettyString()
- : modelObject.getBefore();
- ProvisioningResult<? extends AnyTO> result = restore(json, anyTO);
- anyTO.setLastChangeDate(new Date(Long.parseLong(result.getEntity().getETagValue())));
-
- target.add(container);
- } catch (Exception e) {
- LOG.error("While restoring {}", anyTO.getClass().getName(), e);
- SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
- ? e.getClass().getName() : e.getMessage());
- }
- ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ target.add(modal);
}
- }, ActionLink.ActionType.RESTORE, auditRestoreEntitlement);
+ }, ActionLink.ActionType.VIEW, StandardEntitlement.AUDIT_READ);
return panel;
}
@@ -240,72 +161,38 @@ public class AuditHistoryDirectoryPanel extends
return Collections.emptyList();
}
- private void viewAuditHistory(final AuditEntryTO auditEntryBean, final AjaxRequestTarget target) {
- List<AuditEntryTO> search = restClient.search(anyTO.getKey(),
- 0,
- TOTAL_AUDIT_HISTORY_COMPARISONS,
- getSortParam(),
- getQueryableAuditEvents(),
- getQueryableAuditResult());
-
- multiLevelPanelRef.next(
- new StringResourceModel("audit.diff.view", this).getObject(),
- new HistoryAuditDetails(modal, auditEntryBean,
- getPage().getPageReference(), toAuditEntryTOs(search), anyTO), target);
- }
-
- private List<AuditEntryTO> toAuditEntryTOs(final List<AuditEntryTO> search) {
- return search
- .stream()
- .map(entry -> {
- AuditEntryTO bean = new AuditEntryTO();
- bean.setKey(anyTO.getKey());
- bean.setBefore(entry.getBefore());
- bean.setDate(entry.getDate());
- bean.setEvent(entry.getEvent());
- bean.getInputs().addAll(entry.getInputs());
- bean.setLoggerName(entry.getLoggerName());
- bean.setOutput(entry.getOutput());
- bean.setResult(entry.getResult());
- bean.setSubCategory(entry.getSubCategory());
- bean.setThrowable(entry.getThrowable());
- bean.setWho(entry.getWho());
- return bean;
- })
- .collect(Collectors.toList());
- }
-
protected class AuditHistoryProvider extends DirectoryDataProvider<AuditEntryTO> {
private static final long serialVersionUID = 415113175628260864L;
AuditHistoryProvider(final int paginatorRows) {
super(paginatorRows);
+ setSort("date", SortOrder.DESCENDING);
}
@Override
- public Iterator<? extends AuditEntryTO> iterator(final long first, final long count) {
- return getAuditEntryBeans(first, count).iterator();
+ public long size() {
+ return restClient.count(entity.getKey(), type, category, EVENTS, AuditElements.Result.SUCCESS);
}
@Override
- public long size() {
- return restClient.count(anyTO.getKey(), getQueryableAuditEvents(), getQueryableAuditResult());
+ public Iterator<AuditEntryTO> iterator(final long first, final long count) {
+ int page = ((int) first / paginatorRows);
+ return restClient.search(
+ entity.getKey(),
+ (page < 0 ? 0 : page) + 1,
+ paginatorRows,
+ type,
+ category,
+ EVENTS,
+ AuditElements.Result.SUCCESS,
+ REST_SORT).
+ iterator();
}
@Override
public IModel<AuditEntryTO> model(final AuditEntryTO auditEntryBean) {
return new CompoundPropertyModel<>(auditEntryBean);
}
-
- private List<AuditEntryTO> getAuditEntryBeans(final long first, final long count) {
- int page = (int) first / paginatorRows;
- return restClient.search(anyTO.getKey(),
- Math.max(page, 0) + 1,
- Long.valueOf(count).intValue(),
- getSortParam(),
- getQueryableAuditEvents(),
- getQueryableAuditResult());
- }
}
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryModal.java b/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryModal.java
index 7b42c6e..615cecd 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryModal.java
@@ -21,35 +21,45 @@ package org.apache.syncope.client.console.audit;
import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.MultilevelPanel;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.panel.Panel;
-public class AuditHistoryModal<T extends AnyTO> extends Panel implements ModalPanel {
+public abstract class AuditHistoryModal<T extends EntityTO> extends Panel implements ModalPanel {
private static final long serialVersionUID = 1066124171682570080L;
- protected final AuditHistoryDirectoryPanel directoryPanel;
-
public AuditHistoryModal(
final BaseModal<?> baseModal,
- final PageReference pageReference,
- final T entity) {
+ final AuditElements.EventCategoryType type,
+ final String category,
+ final T entity,
+ final String auditRestoreEntitlement,
+ final PageReference pageRef) {
super(BaseModal.CONTENT_ID);
- final MultilevelPanel mlp = new MultilevelPanel("history");
+ MultilevelPanel mlp = new MultilevelPanel("history");
mlp.setOutputMarkupId(true);
- this.directoryPanel = getDirectoryPanel(mlp, baseModal, pageReference, entity);
- add(mlp.setFirstLevel(this.directoryPanel));
- }
+ add(mlp.setFirstLevel(new AuditHistoryDirectoryPanel<T>(
+ baseModal,
+ mlp,
+ type,
+ category,
+ entity,
+ auditRestoreEntitlement,
+ pageRef) {
- protected AuditHistoryDirectoryPanel getDirectoryPanel(
- final MultilevelPanel mlp,
- final BaseModal<?> baseModal,
- final PageReference pageReference,
- final T entity) {
+ private static final long serialVersionUID = 1952220682903768286L;
- return new AuditHistoryDirectoryPanel(baseModal, mlp, pageReference, entity);
+ @Override
+ protected void restore(final T entity, final AjaxRequestTarget target) {
+ AuditHistoryModal.this.restore(entity, target);
+ }
+ }));
}
+
+ protected abstract void restore(T entity, AjaxRequestTarget target);
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/audit/HistoryAuditDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/audit/HistoryAuditDetails.java
deleted file mode 100644
index a44fbbd..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/audit/HistoryAuditDetails.java
+++ /dev/null
@@ -1,232 +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.client.console.audit;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.AbstractModalPanel;
-import org.apache.syncope.client.console.panels.MultilevelPanel;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.JsonDiffPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.JsonEditorPanel;
-import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.AuditEntryTO;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-
-public class HistoryAuditDetails extends MultilevelPanel.SecondLevel {
-
- private static final long serialVersionUID = -7400543686272100483L;
-
- private static final ObjectMapper MAPPER = new ObjectMapper();
-
- private static final String KEY_CURRENT = "current";
-
- private final AuditEntryTO selected;
-
- private final List<AuditEntryTO> availableTOs;
-
- private AbstractModalPanel<String> jsonPanel;
-
- private final AnyTO currentTO;
-
- public HistoryAuditDetails(
- final BaseModal<?> baseModal,
- final AuditEntryTO selected,
- final PageReference pageRef,
- final List<AuditEntryTO> availableTOs,
- final AnyTO currentTO) {
-
- super();
- this.availableTOs = availableTOs.stream().
- filter(object -> !selected.equals(object) && selected.getBefore() != null).
- collect(Collectors.toList());
- this.selected = selected;
- this.currentTO = currentTO;
-
- addCurrentInstanceConf();
- Form<?> form = initDropdownDiffConfForm();
- add(form);
- form.setVisible(!this.availableTOs.isEmpty());
-
- showConfigurationSinglePanel();
- }
-
- private void showConfigurationSinglePanel() {
- Pair<String, String> info = getJSONInfo(selected);
-
- jsonPanel = new JsonEditorPanel(null, new PropertyModel<>(info, "right"), true, null) {
-
- private static final long serialVersionUID = -8927036362466990179L;
-
- @Override
- public void onSubmit(final AjaxRequestTarget target) {
- modal.close(target);
- }
- };
- jsonPanel.setOutputMarkupId(true);
-
- addOrReplace(jsonPanel);
- }
-
- private void showConfigurationDiffPanel(final List<AuditEntryTO> entries) {
- List<Pair<String, String>> infos = new ArrayList<>();
- entries.forEach(entry -> infos.add(getJSONInfo(entry)));
-
- jsonPanel = new JsonDiffPanel(null, new PropertyModel<>(infos.get(0), "value"),
- new PropertyModel<>(infos.get(1), "value"), null) {
-
- private static final long serialVersionUID = -8927036362466990179L;
-
- @Override
- public void onSubmit(final AjaxRequestTarget target) {
- modal.close(target);
- }
- };
-
- replace(jsonPanel);
- }
-
- private String getSanitizedTOAsJSON(final AnyTO anyTO) throws Exception {
- if (anyTO instanceof UserTO) {
- UserTO userTO = (UserTO) anyTO;
- userTO.setPassword(null);
- userTO.setSecurityAnswer(null);
- return MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(userTO);
- }
- return MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(anyTO);
- }
-
- private Pair<String, String> getJSONInfo(final AuditEntryTO auditEntryBean) {
- try {
- String content = auditEntryBean.getBefore() == null
- ? MAPPER.readTree(auditEntryBean.getOutput()).get("entity").toPrettyString()
- : auditEntryBean.getBefore();
-
- AnyTO anyTO = MAPPER.readValue(content, currentTO.getClass());
- String json = getSanitizedTOAsJSON(anyTO);
- return Pair.of(auditEntryBean.getKey(), json);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- private static <T extends AuditEntryTO> Map<String, String> getDropdownNamesMap(final List<T> entries) {
- Map<String, String> map = new LinkedHashMap<>();
- entries.forEach(audit -> {
- String value = audit.getWho() + " - " + SyncopeConsoleSession.get().getDateFormat().format(audit.getDate());
- if (audit.getKey().equalsIgnoreCase(KEY_CURRENT)) {
- value += " - " + audit.getKey();
- }
- map.put(audit.getKey(), value);
- });
- return map;
- }
-
- private Form<?> initDropdownDiffConfForm() {
- final Form<AuditEntryTO> form = new Form<>("form");
- form.setModel(new CompoundPropertyModel<>(selected));
- form.setOutputMarkupId(true);
-
- Map<String, String> namesMap = getDropdownNamesMap(availableTOs);
- List<String> keys = new ArrayList<>(namesMap.keySet());
-
- final AjaxDropDownChoicePanel<String> dropdownElem = new AjaxDropDownChoicePanel<>(
- "compareDropdown",
- getString("compare"),
- new PropertyModel<>(selected, Constants.KEY_FIELD_NAME),
- false);
- dropdownElem.setChoices(keys);
- dropdownElem.setChoiceRenderer(new IChoiceRenderer<String>() {
-
- private static final long serialVersionUID = -6265603675261014912L;
-
- @Override
- public Object getDisplayValue(final String value) {
- return namesMap.get(value) == null ? value : namesMap.get(value);
- }
-
- @Override
- public String getIdValue(final String value, final int i) {
- return value;
- }
-
- @Override
- public String getObject(
- final String id, final IModel<? extends List<? extends String>> choices) {
- return id;
- }
- });
- dropdownElem.setNullValid(false);
- dropdownElem.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306810L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- List<AuditEntryTO> elemsToCompare = new ArrayList<>();
- elemsToCompare.add(selected);
-
- final String selectedKey = dropdownElem.getModelObject();
- if (selectedKey != null) {
- if (!selectedKey.isEmpty()) {
- AuditEntryTO confToCompare = availableTOs.stream().
- filter(object -> object.getKey().equals(selectedKey)).findAny().orElse(null);
- elemsToCompare.add(confToCompare);
- showConfigurationDiffPanel(elemsToCompare);
- } else {
- showConfigurationSinglePanel();
- }
- }
- target.add(jsonPanel);
- }
- });
- form.add(dropdownElem);
-
- return form;
- }
-
- private void addCurrentInstanceConf() {
- try {
- AuditEntryTO entryBean = new AuditEntryTO();
- entryBean.setKey(KEY_CURRENT);
- entryBean.setWho(currentTO.getCreator());
- entryBean.setDate(currentTO.getCreationDate());
- entryBean.setBefore(MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(currentTO));
- availableTOs.add(entryBean);
- } catch (final Exception e) {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
index 229af3d..4327d69 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
@@ -36,14 +36,19 @@ import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
import org.apache.syncope.client.console.wizards.AjaxWizard;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.syncope.client.console.wizards.any.AnyWrapper;
+import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.patch.AnyObjectPatch;
import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.types.AnyEntitlement;
import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.event.Broadcast;
import org.apache.wicket.model.CompoundPropertyModel;
@@ -114,24 +119,6 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
String.format("%s,%s", AnyEntitlement.READ.getFor(type), AnyEntitlement.UPDATE.getFor(type))).
setRealms(realm, model.getObject().getDynRealms());
- panel.add(new ActionLink<AnyObjectTO>() {
-
- private static final long serialVersionUID = -7978723352517770645L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
- final AnyObjectTO clone = SerializationUtils.clone(model.getObject());
- clone.setKey(null);
- send(AnyObjectDirectoryPanel.this, Broadcast.EXACT,
- new AjaxWizard.NewItemActionEvent<>(new AnyWrapper<>(clone), target));
- }
-
- @Override
- protected boolean statusCondition(final AnyObjectTO modelObject) {
- return addAjaxLink.isVisibleInHierarchy() && realm.startsWith(SyncopeConstants.ROOT_REALM);
- }
- }, ActionType.CLONE, AnyEntitlement.CREATE.getFor(type)).setRealm(realm);
-
if (wizardInModal) {
panel.add(new ActionLink<AnyObjectTO>() {
@@ -190,26 +177,69 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
}, ActionType.NOTIFICATION_TASKS, StandardEntitlement.TASK_LIST);
}
panel.add(new ActionLink<AnyObjectTO>() {
+
private static final long serialVersionUID = -2878723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
- IModel<AnyWrapper<AnyObjectTO>> formModel = new CompoundPropertyModel<>(
- new AnyWrapper<>(new AnyObjectRestClient().read(model.getObject().getKey())));
- altDefaultModal.setFormModel(formModel);
-
- target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
- altDefaultModal,
- pageRef,
- formModel.getObject().getInnerObject())));
+ model.setObject(restClient.read(model.getObject().getKey()));
+ target.add(altDefaultModal.setContent(new AuditHistoryModal<AnyObjectTO>(
+ altDefaultModal,
+ AuditElements.EventCategoryType.LOGIC,
+ "AnyObjectLogic",
+ model.getObject(),
+ AnyEntitlement.UPDATE.getFor(type),
+ pageRef) {
+
+ private static final long serialVersionUID = -7440902560249531201L;
+
+ @Override
+ protected void restore(final AnyObjectTO updated, final AjaxRequestTarget target) {
+ AnyObjectTO original = model.getObject();
+ try {
+ AnyObjectPatch anyObjectPatch = AnyOperations.diff(updated, original, false);
+ ProvisioningResult<AnyObjectTO> result =
+ restClient.update(original.getETagValue(), anyObjectPatch);
+ model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
+
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (Exception e) {
+ LOG.error("While restoring any object {}", model.getObject().getKey(), e);
+ SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ throw new WicketRuntimeException(e);
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }));
altDefaultModal.header(new StringResourceModel("auditHistory.title", model));
altDefaultModal.show(true);
}
- }, ActionType.VIEW_AUDIT_HISTORY, StandardEntitlement.AUDIT_LIST).
- setRealms(realm, model.getObject().getDynRealms());
-
+ }, ActionType.VIEW_AUDIT_HISTORY,
+ String.format("%s,%s", AnyEntitlement.READ.getFor(type), StandardEntitlement.AUDIT_LIST)).
+ setRealms(realm, model.getObject().getDynRealms());
+
+ panel.add(new ActionLink<AnyObjectTO>() {
+
+ private static final long serialVersionUID = -7978723352517770645L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
+ final AnyObjectTO clone = SerializationUtils.clone(model.getObject());
+ clone.setKey(null);
+ send(AnyObjectDirectoryPanel.this, Broadcast.EXACT,
+ new AjaxWizard.NewItemActionEvent<>(new AnyWrapper<>(clone), target));
+ }
+
+ @Override
+ protected boolean statusCondition(final AnyObjectTO modelObject) {
+ return addAjaxLink.isVisibleInHierarchy() && realm.startsWith(SyncopeConstants.ROOT_REALM);
+ }
+ }, ActionType.CLONE, AnyEntitlement.CREATE.getFor(type)).setRealm(realm);
+
panel.add(new ActionLink<AnyObjectTO>() {
private static final long serialVersionUID = -7978723352517770646L;
@@ -218,10 +248,11 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) {
try {
restClient.delete(model.getObject().getETagValue(), model.getObject().getKey());
+
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (SyncopeClientException e) {
- LOG.error("While deleting object {}", model.getObject().getKey(), e);
+ LOG.error("While deleting any object {}", model.getObject().getKey(), e);
SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
? e.getClass().getName() : e.getMessage());
}
@@ -233,7 +264,7 @@ public class AnyObjectDirectoryPanel extends AnyDirectoryPanel<AnyObjectTO, AnyO
return realm.startsWith(SyncopeConstants.ROOT_REALM);
}
}, ActionType.DELETE, AnyEntitlement.DELETE.getFor(type), true).setRealm(realm);
-
+
return panel;
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
index e01db3a..92fe0fa 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.syncope.client.console.commons.Constants;
@@ -50,10 +49,6 @@ public class AnyTypeClassDetailsPanel extends Panel {
private final List<String> availableVirSchemas = schemaRestClient.getVirSchemaNames();
- private static final List<String> LAYOUT_PARAMETERS =
- Arrays.asList(new String[] { "admin.user.layout", "self.user.layout",
- "admin.group.layout", "self.group.layout", "admin.membership.layout", "self.membership.layout" });
-
public AnyTypeClassDetailsPanel(final String id, final AnyTypeClassTO anyTypeClassTO) {
super(id);
@@ -109,7 +104,6 @@ public class AnyTypeClassDetailsPanel extends Panel {
}
private void buildAvailableSchemas(final String key) {
-
List<String> configurationSchemas = new ConfRestClient().list().stream().
map(AttrTO::getSchema).collect(Collectors.toList());
@@ -122,6 +116,5 @@ public class AnyTypeClassDetailsPanel extends Panel {
});
availablePlainSchemas.removeAll(configurationSchemas);
- availablePlainSchemas.removeAll(LAYOUT_PARAMETERS);
}
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java
deleted file mode 100644
index e366891..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java
+++ /dev/null
@@ -1,229 +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.client.console.panels;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.DirectoryDataProvider;
-import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.panels.ConnInstanceHistoryConfDirectoryPanel.CHConfProvider;
-import org.apache.syncope.client.console.rest.ConnectorHistoryRestClient;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.StringResourceModel;
-
-/**
- * List all connector configuration history instances for the selected connector.
- */
-public abstract class ConnInstanceHistoryConfDirectoryPanel extends DirectoryPanel<
- ConnInstanceHistoryConfTO, ConnInstanceHistoryConfTO, CHConfProvider, ConnectorHistoryRestClient>
- implements ModalPanel {
-
- private static final long serialVersionUID = 4984337552918213290L;
-
- protected final BaseModal<?> baseModal;
-
- private final MultilevelPanel multiLevelPanelRef;
-
- private final String entityKey;
-
- public ConnInstanceHistoryConfDirectoryPanel(
- final BaseModal<?> baseModal,
- final MultilevelPanel multiLevelPanelRef,
- final String entityKey,
- final PageReference pageRef) {
-
- super(MultilevelPanel.FIRST_LEVEL_ID, pageRef, false, false);
-
- this.baseModal = baseModal;
- this.multiLevelPanelRef = multiLevelPanelRef;
- restClient = new ConnectorHistoryRestClient();
- setShowResultPage(false);
- disableCheckBoxes();
-
- this.entityKey = entityKey;
- initResultTable();
- }
-
- @Override
- protected List<IColumn<ConnInstanceHistoryConfTO, String>> getColumns() {
- final List<IColumn<ConnInstanceHistoryConfTO, String>> columns = new ArrayList<>();
-
- columns.add(new KeyPropertyColumn<>(
- new StringResourceModel(Constants.KEY_FIELD_NAME, this), Constants.KEY_FIELD_NAME));
-
- columns.add(new PropertyColumn<>(new StringResourceModel(
- "creator", this), "creator", "creator"));
-
- columns.add(new DatePropertyColumn<>(
- new StringResourceModel("creation", this), "creation", "creation"));
-
- return columns;
- }
-
- @Override
- public ActionsPanel<ConnInstanceHistoryConfTO> getActions(final IModel<ConnInstanceHistoryConfTO> model) {
- final ActionsPanel<ConnInstanceHistoryConfTO> panel = super.getActions(model);
- final ConnInstanceHistoryConfTO connHistoryConfTO = model.getObject();
-
- // -- view
- panel.add(new ActionLink<ConnInstanceHistoryConfTO>() {
-
- private static final long serialVersionUID = -6745431735457245600L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ConnInstanceHistoryConfTO modelObject) {
-
- ConnInstanceHistoryConfDirectoryPanel.this.getTogglePanel().close(target);
- viewConfiguration(modelObject, target);
- target.add(modal);
- }
- }, ActionLink.ActionType.VIEW, StandardEntitlement.CONNECTOR_HISTORY_LIST);
-
- // -- restore
- panel.add(new ActionLink<ConnInstanceHistoryConfTO>() {
-
- private static final long serialVersionUID = -6745431735457245600L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ConnInstanceHistoryConfTO modelObject) {
- try {
- restClient.restore(modelObject.getKey());
- ConnInstanceHistoryConfDirectoryPanel.this.getTogglePanel().close(target);
- target.add(container);
- } catch (SyncopeClientException e) {
- LOG.error("While restoring {}", connHistoryConfTO.getKey(), e);
- SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
- ? e.getClass().getName() : e.getMessage());
- }
- ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
- }
- }, ActionLink.ActionType.RESTORE, StandardEntitlement.CONNECTOR_HISTORY_RESTORE);
-
- // -- delete
- panel.add(new ActionLink<ConnInstanceHistoryConfTO>() {
-
- private static final long serialVersionUID = -6745431735457245600L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ConnInstanceHistoryConfTO modelObject) {
- try {
- restClient.delete(modelObject.getKey());
- SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
- target.add(container);
- ConnInstanceHistoryConfDirectoryPanel.this.getTogglePanel().close(target);
- } catch (SyncopeClientException e) {
- LOG.error("While deleting {}", connHistoryConfTO.getKey(), e);
- SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
- ? e.getClass().getName() : e.getMessage());
- }
- ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
- }
- }, ActionLink.ActionType.DELETE, StandardEntitlement.CONNECTOR_HISTORY_DELETE, true);
-
- return panel;
- }
-
- @Override
- protected Collection<ActionType> getBatches() {
- return Collections.<ActionLink.ActionType>emptyList();
- }
-
- @Override
- protected String paginatorRowsKey() {
- return Constants.PREF_CONNECTOR_HISTORY_CONF_PAGINATOR_ROWS;
- }
-
- protected abstract void viewConfiguration(ConnInstanceHistoryConfTO connHistoryTO, AjaxRequestTarget target);
-
- @Override
- protected void resultTableCustomChanges(
- final AjaxDataTablePanel.Builder<ConnInstanceHistoryConfTO, String> resultTableBuilder) {
- resultTableBuilder.setMultiLevelPanel(baseModal, multiLevelPanelRef);
- }
-
- @Override
- protected CHConfProvider dataProvider() {
- return new CHConfProvider(rows);
- }
-
- @Override
- public void onEvent(final IEvent<?> event) {
- super.onEvent(event);
- if (event.getPayload() instanceof ExitEvent && modal != null) {
- final AjaxRequestTarget target = ExitEvent.class.cast(event.getPayload()).getTarget();
- baseModal.show(false);
- baseModal.close(target);
- }
- }
-
- protected class CHConfProvider extends DirectoryDataProvider<ConnInstanceHistoryConfTO> {
-
- private static final long serialVersionUID = -4402560904215049574L;
-
- private final SortableDataProviderComparator<ConnInstanceHistoryConfTO> comparator;
-
- public CHConfProvider(final int paginatorRows) {
- super(paginatorRows);
-
- setSort("creation", SortOrder.ASCENDING);
- comparator = new SortableDataProviderComparator<>(this);
- }
-
- @Override
- public Iterator<ConnInstanceHistoryConfTO> iterator(final long first, final long count) {
- final List<ConnInstanceHistoryConfTO> configurations = restClient.list(entityKey);
-
- Collections.sort(configurations, comparator);
- return configurations.iterator();
- }
-
- @Override
- public long size() {
- return restClient.list(entityKey).size();
- }
-
- @Override
- public IModel<ConnInstanceHistoryConfTO> model(final ConnInstanceHistoryConfTO object) {
- return new CompoundPropertyModel<>(object);
- }
- }
-}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
index c2ef5e5..f06b07e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.console.panels;
+import com.fasterxml.jackson.databind.ObjectMapper;
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import java.io.Serializable;
import java.util.Collection;
@@ -57,6 +58,8 @@ public abstract class DirectoryPanel<
protected static final Logger LOG = LoggerFactory.getLogger(DirectoryPanel.class);
+ protected static final ObjectMapper MAPPER = new ObjectMapper();
+
/**
* Application preferences.
*/
@@ -87,7 +90,7 @@ public abstract class DirectoryPanel<
/**
* Result table.
*/
- private AjaxDataTablePanel<T, String> resultTable;
+ protected AjaxDataTablePanel<T, String> resultTable;
/**
* Data provider used to search for entities.
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
index 0091949..93d9f03 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java
@@ -45,14 +45,18 @@ import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.syncope.client.console.wizards.any.AnyWrapper;
import org.apache.syncope.client.console.wizards.any.GroupWrapper;
import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.patch.GroupPatch;
import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.to.AnyTypeClassTO;
import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AnyEntitlement;
import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.syncope.common.lib.types.ProvisionAction;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
@@ -223,24 +227,6 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
- GroupTO clone = SerializationUtils.clone(model.getObject());
- clone.setKey(null);
- send(GroupDirectoryPanel.this, Broadcast.EXACT,
- new AjaxWizard.NewItemActionEvent<>(new GroupWrapper(clone), target));
- }
-
- @Override
- protected boolean statusCondition(final GroupTO modelObject) {
- return realm.startsWith(SyncopeConstants.ROOT_REALM);
- }
- }, ActionType.CLONE, StandardEntitlement.GROUP_CREATE).setRealm(realm);
-
- panel.add(new ActionLink<GroupTO>() {
-
- private static final long serialVersionUID = 6242834621660352855L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
target.add(typeExtensionsModal.setContent(new TypeExtensionDirectoryPanel(
typeExtensionsModal, model.getObject(), pageRef)));
typeExtensionsModal.header(new StringResourceModel("typeExtensions", model));
@@ -367,33 +353,76 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
- IModel<GroupWrapper> formModel = new CompoundPropertyModel<>(
- new GroupWrapper(new GroupRestClient().read(model.getObject().getKey())));
- target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
+ model.setObject(restClient.read(model.getObject().getKey()));
+ target.add(altDefaultModal.setContent(new AuditHistoryModal<GroupTO>(
altDefaultModal,
- pageRef,
- formModel.getObject().getInnerObject())));
+ AuditElements.EventCategoryType.LOGIC,
+ "GroupLogic",
+ model.getObject(),
+ StandardEntitlement.GROUP_UPDATE,
+ pageRef) {
+
+ private static final long serialVersionUID = -5819724478921691835L;
+
+ @Override
+ protected void restore(final GroupTO updated, final AjaxRequestTarget target) {
+ GroupTO original = model.getObject();
+ try {
+ GroupPatch groupPatch = AnyOperations.diff(updated, original, false);
+ ProvisioningResult<GroupTO> result = restClient.update(original.getETagValue(), groupPatch);
+ model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
+
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (Exception e) {
+ LOG.error("While restoring group {}", model.getObject().getKey(), e);
+ SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }));
altDefaultModal.header(new Model<>(
getString("auditHistory.title", new Model<>(new AnyWrapper<>(model.getObject())))));
altDefaultModal.show(true);
}
- }, ActionType.VIEW_AUDIT_HISTORY, StandardEntitlement.AUDIT_LIST).
+ }, ActionType.VIEW_AUDIT_HISTORY,
+ String.format("%s,%s", StandardEntitlement.GROUP_READ, StandardEntitlement.AUDIT_LIST)).
setRealms(realm, model.getObject().getDynRealms());
panel.add(new ActionLink<GroupTO>() {
+ private static final long serialVersionUID = 6242834621660352855L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
+ GroupTO clone = SerializationUtils.clone(model.getObject());
+ clone.setKey(null);
+ send(GroupDirectoryPanel.this, Broadcast.EXACT,
+ new AjaxWizard.NewItemActionEvent<>(new GroupWrapper(clone), target));
+ }
+
+ @Override
+ protected boolean statusCondition(final GroupTO modelObject) {
+ return realm.startsWith(SyncopeConstants.ROOT_REALM);
+ }
+ }, ActionType.CLONE, StandardEntitlement.GROUP_CREATE).setRealm(realm);
+
+ panel.add(new ActionLink<GroupTO>() {
+
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
try {
restClient.delete(model.getObject().getETagValue(), model.getObject().getKey());
+
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (SyncopeClientException e) {
- LOG.error("While deleting object {}", model.getObject().getKey(), e);
+ LOG.error("While deleting group {}", model.getObject().getKey(), e);
SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
? e.getClass().getName() : e.getMessage());
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/HistoryConfDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/HistoryConfDetails.java
deleted file mode 100644
index bb6ba40..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/HistoryConfDetails.java
+++ /dev/null
@@ -1,247 +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.client.console.panels;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.rest.ConnectorRestClient;
-import org.apache.syncope.client.console.rest.ResourceRestClient;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.JsonDiffPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.JsonEditorPanel;
-import org.apache.syncope.common.lib.to.AbstractHistoryConf;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
-import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
-import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-
-public class HistoryConfDetails<T extends AbstractHistoryConf> extends MultilevelPanel.SecondLevel {
-
- private static final long serialVersionUID = -7400543686272100483L;
-
- private static final ObjectMapper MAPPER = new ObjectMapper();
-
- private final T selectedHistoryConfTO;
-
- private final List<T> availableHistoryConfTOs;
-
- private AbstractModalPanel<String> jsonPanel;
-
- public HistoryConfDetails(final BaseModal<?> baseModal, final T selectedHistoryConfTO,
- final PageReference pageRef, final List<T> availableHistoryConfTOs) {
- super();
-
- // remove selected conf from list
- this.availableHistoryConfTOs = availableHistoryConfTOs.stream().
- filter(object -> !object.getKey().equals(selectedHistoryConfTO.getKey())).collect(Collectors.toList());
- this.selectedHistoryConfTO = selectedHistoryConfTO;
-
- // add current conf to list
- addCurrentInstanceConf();
-
- Form<?> form = initDropdownDiffConfForm();
- add(form);
- form.setVisible(!availableHistoryConfTOs.isEmpty());
-
- showConfigurationSinglePanel();
- }
-
- private void showConfigurationSinglePanel() {
- Pair<String, String> info = getJSONInfo(selectedHistoryConfTO);
-
- jsonPanel = new JsonEditorPanel(null, new PropertyModel<String>(info, "right"), true, null) {
-
- private static final long serialVersionUID = -8927036362466990179L;
-
- @Override
- public void onSubmit(final AjaxRequestTarget target) {
- modal.close(target);
- }
- };
- jsonPanel.setOutputMarkupId(true);
-
- addOrReplace(jsonPanel);
- }
-
- private void showConfigurationDiffPanel(final List<T> historyConfTOs) {
- List<Pair<String, String>> infos = new ArrayList<>();
- historyConfTOs.forEach(historyConfTO -> {
- infos.add(getJSONInfo(historyConfTO));
- });
-
- jsonPanel = new JsonDiffPanel(null, new PropertyModel<String>(infos.get(0), "value"),
- new PropertyModel<String>(infos.get(1), "value"), null) {
-
- private static final long serialVersionUID = -8927036362466990179L;
-
- @Override
- public void onSubmit(final AjaxRequestTarget target) {
- modal.close(target);
- }
- };
-
- replace(jsonPanel);
- }
-
- private Pair<String, String> getJSONInfo(final T historyConfTO) {
- Object conf = null; // selected configuration instance
- String key = "";
- if (historyConfTO instanceof ConnInstanceHistoryConfTO) {
- ConnInstanceHistoryConfTO historyConf = ConnInstanceHistoryConfTO.class.cast(historyConfTO);
- conf = historyConf.getConnInstanceTO();
- key = historyConf.getKey();
- } else if (historyConfTO instanceof ResourceHistoryConfTO) {
- ResourceHistoryConfTO historyConf = ResourceHistoryConfTO.class.cast(historyConfTO);
- conf = historyConf.getResourceTO();
- key = historyConf.getKey();
- }
-
- String json = "";
- try {
- json = MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(conf);
- } catch (IOException ex) {
- DirectoryPanel.LOG.error("Error converting objects to JSON", ex);
- }
-
- return Pair.of(key, json);
- }
-
- private <T extends AbstractHistoryConf> Map<String, String> getDropdownNamesMap(final List<T> historyConfTOs) {
- Map<String, String> historyConfMap = new LinkedHashMap<>();
-
- String current = null;
- for (T historyConf : historyConfTOs) {
- if (historyConf.getCreation() == null) {
- current = historyConf.getKey();
- } else {
- historyConfMap.put(historyConf.getKey(), historyConf.getCreator() + " - "
- + SyncopeConsoleSession.get().getDateFormat().format(
- historyConf.getCreation()) + " - " + historyConf.getKey());
- }
- }
- if (current != null) {
- historyConfMap.put(current, getString("current"));
- }
-
- return historyConfMap;
- }
-
- private Form<?> initDropdownDiffConfForm() {
- final Form<T> form = new Form<>("form");
- form.setModel(new CompoundPropertyModel<>(selectedHistoryConfTO));
- form.setOutputMarkupId(true);
-
- final Map<String, String> namesMap = getDropdownNamesMap(availableHistoryConfTOs);
- List<String> keys = new ArrayList<>(namesMap.keySet());
-
- final AjaxDropDownChoicePanel<String> dropdownElem = new AjaxDropDownChoicePanel<>(
- "compareDropdown",
- getString("compare"),
- new PropertyModel<>(selectedHistoryConfTO, Constants.KEY_FIELD_NAME),
- false);
- dropdownElem.setChoices(keys);
- dropdownElem.setChoiceRenderer(new IChoiceRenderer<String>() {
-
- private static final long serialVersionUID = -6265603675261014912L;
-
- @Override
- public Object getDisplayValue(final String value) {
- return namesMap.get(value) == null ? value : namesMap.get(value);
- }
-
- @Override
- public String getIdValue(final String value, final int i) {
- return value;
- }
-
- @Override
- public String getObject(
- final String id, final IModel<? extends List<? extends String>> choices) {
- return id;
- }
- });
- dropdownElem.setNullValid(true);
- dropdownElem.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306810L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- List<T> elemsToCompare = new ArrayList<>();
- elemsToCompare.add(selectedHistoryConfTO);
-
- final String selectedKey = dropdownElem.getModelObject();
- if (selectedKey != null) {
- if (!selectedKey.isEmpty()) {
- T confToCompare = availableHistoryConfTOs.stream().
- filter(object -> object.getKey().equals(selectedKey)).findAny().orElse(null);
- elemsToCompare.add(confToCompare);
- showConfigurationDiffPanel(elemsToCompare);
- } else {
- showConfigurationSinglePanel();
- }
- }
- target.add(jsonPanel);
- }
- });
- form.add(dropdownElem);
-
- return form;
- }
-
- @SuppressWarnings("unchecked")
- private void addCurrentInstanceConf() {
- T conf = null;
-
- if (selectedHistoryConfTO instanceof ConnInstanceHistoryConfTO) {
- ConnInstanceTO current = new ConnectorRestClient().read(
- ConnInstanceHistoryConfTO.class.cast(selectedHistoryConfTO).getConnInstanceTO().getKey());
- conf = (T) new ConnInstanceHistoryConfTO();
- ((ConnInstanceHistoryConfTO) conf).setConnInstanceTO(current);
- } else if (selectedHistoryConfTO instanceof ResourceHistoryConfTO) {
- ResourceTO current = new ResourceRestClient().read(
- ResourceHistoryConfTO.class.cast(selectedHistoryConfTO).getResourceTO().getKey());
- conf = (T) new ResourceHistoryConfTO();
- ((ResourceHistoryConfTO) conf).setResourceTO(current);
- }
-
- if (conf != null) {
- conf.setCreator(selectedHistoryConfTO.getCreator());
- conf.setKey("current");
- availableHistoryConfTOs.add(conf);
- }
- }
-}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/HistoryConfList.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/HistoryConfList.java
deleted file mode 100644
index 5848b7a..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/HistoryConfList.java
+++ /dev/null
@@ -1,74 +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.client.console.panels;
-
-import java.io.Serializable;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
-import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.StringResourceModel;
-
-public class HistoryConfList<T extends Serializable> extends Panel implements ModalPanel {
-
- private static final long serialVersionUID = 2482507052037665907L;
-
- public <T extends AnyTO> HistoryConfList(
- final BaseModal<?> baseModal,
- final String entityKey,
- final PageReference pageReference,
- final EntityTO modelObj) {
-
- super(BaseModal.CONTENT_ID);
-
- final MultilevelPanel mlp = new MultilevelPanel("history");
-
- mlp.setFirstLevel(modelObj instanceof ConnInstanceTO
- ? new ConnInstanceHistoryConfDirectoryPanel(baseModal, mlp, entityKey, pageReference) {
-
- private static final long serialVersionUID = 1422189028000709100L;
-
- @Override
- protected void viewConfiguration(final ConnInstanceHistoryConfTO historyTO,
- final AjaxRequestTarget target) {
- mlp.next(
- new StringResourceModel("history.diff.view", this).getObject(),
- new HistoryConfDetails<>(modal, historyTO, pageReference, restClient.list(entityKey)), target);
- }
- } : new ResourceHistoryConfDirectoryPanel(baseModal, mlp, entityKey, pageReference) {
-
- private static final long serialVersionUID = 1422189028000709100L;
-
- @Override
- protected void viewConfiguration(final ResourceHistoryConfTO historyTO,
- final AjaxRequestTarget target) {
- mlp.next(
- new StringResourceModel("history.diff.view", this).getObject(),
- new HistoryConfDetails<>(modal, historyTO, pageReference, restClient.list(entityKey)), target);
- }
- });
-
- add(mlp);
- }
-}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/LinkedAccountModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/LinkedAccountModalPanel.java
index da7569d..b5de68f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/LinkedAccountModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/LinkedAccountModalPanel.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import static org.apache.syncope.client.console.panels.AbstractModalPanel.LOG;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -54,11 +52,15 @@ import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class LinkedAccountModalPanel extends Panel implements ModalPanel {
private static final long serialVersionUID = -4603032036433309900L;
+ private static final Logger LOG = LoggerFactory.getLogger(LinkedAccountModalPanel.class);
+
private final LinkedAccountWizardBuilder wizard;
private final WizardMgtPanel<LinkedAccountTO> list;
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java
deleted file mode 100644
index a1cfeb7..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java
+++ /dev/null
@@ -1,230 +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.client.console.panels;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.DirectoryDataProvider;
-import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.panels.ResourceHistoryConfDirectoryPanel.RHConfProvider;
-import org.apache.syncope.client.console.rest.ResourceHistoryRestClient;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.console.wizards.WizardMgtPanel;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.StringResourceModel;
-
-/**
- * List all resource configuration history instances for the selected resource.
- */
-public abstract class ResourceHistoryConfDirectoryPanel extends DirectoryPanel<
- ResourceHistoryConfTO, ResourceHistoryConfTO, RHConfProvider, ResourceHistoryRestClient>
- implements ModalPanel {
-
- private static final long serialVersionUID = 7636531280703026376L;
-
- protected final BaseModal<?> baseModal;
-
- private final MultilevelPanel multiLevelPanelRef;
-
- private final String entityKey;
-
- public ResourceHistoryConfDirectoryPanel(
- final BaseModal<?> baseModal,
- final MultilevelPanel multiLevelPanelRef,
- final String entityKey,
- final PageReference pageRef) {
-
- super(MultilevelPanel.FIRST_LEVEL_ID, pageRef, false, false);
-
- this.baseModal = baseModal;
- this.multiLevelPanelRef = multiLevelPanelRef;
- restClient = new ResourceHistoryRestClient();
- setShowResultPage(false);
- disableCheckBoxes();
-
- this.entityKey = entityKey;
- initResultTable();
- }
-
- @Override
- protected List<IColumn<ResourceHistoryConfTO, String>> getColumns() {
- final List<IColumn<ResourceHistoryConfTO, String>> columns = new ArrayList<>();
-
- columns.add(new KeyPropertyColumn<>(
- new StringResourceModel(Constants.KEY_FIELD_NAME, this), Constants.KEY_FIELD_NAME));
-
- columns.add(new PropertyColumn<>(new StringResourceModel(
- "creator", this), "creator", "creator"));
-
- columns.add(new DatePropertyColumn<>(
- new StringResourceModel("creation", this), "creation", "creation"));
-
- return columns;
- }
-
- @Override
- public ActionsPanel<ResourceHistoryConfTO> getActions(final IModel<ResourceHistoryConfTO> model) {
- final ActionsPanel<ResourceHistoryConfTO> panel = super.getActions(model);
- final ResourceHistoryConfTO resHistoryConfTO = model.getObject();
-
- // -- view
- panel.add(new ActionLink<ResourceHistoryConfTO>() {
-
- private static final long serialVersionUID = -3369924994540304232L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ResourceHistoryConfTO modelObject) {
-
- ResourceHistoryConfDirectoryPanel.this.getTogglePanel().close(target);
- viewConfiguration(modelObject, target);
- target.add(modal);
- }
- }, ActionLink.ActionType.VIEW, StandardEntitlement.RESOURCE_HISTORY_LIST);
-
- // -- restore
- panel.add(new ActionLink<ResourceHistoryConfTO>() {
-
- private static final long serialVersionUID = -3369924994540304232L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ResourceHistoryConfTO modelObject) {
- try {
- restClient.restore(modelObject.getKey());
- ResourceHistoryConfDirectoryPanel.this.getTogglePanel().close(target);
- target.add(container);
- } catch (SyncopeClientException e) {
- LOG.error("While restoring {}", resHistoryConfTO.getKey(), e);
- SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
- ? e.getClass().getName() : e.getMessage());
- }
- ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
- }
- }, ActionLink.ActionType.RESTORE, StandardEntitlement.RESOURCE_HISTORY_RESTORE);
-
- // -- delete
- panel.add(new ActionLink<ResourceHistoryConfTO>() {
-
- private static final long serialVersionUID = -3369924994540304232L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ResourceHistoryConfTO modelObject) {
- try {
- restClient.delete(modelObject.getKey());
- SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
- target.add(container);
- ResourceHistoryConfDirectoryPanel.this.getTogglePanel().close(target);
- } catch (SyncopeClientException e) {
- LOG.error("While deleting {}", resHistoryConfTO.getKey(), e);
- SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
- ? e.getClass().getName() : e.getMessage());
- }
- ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
- }
- }, ActionLink.ActionType.DELETE, StandardEntitlement.RESOURCE_HISTORY_DELETE, true);
-
- return panel;
- }
-
- @Override
- protected Collection<ActionType> getBatches() {
- return Collections.<ActionLink.ActionType>emptyList();
- }
-
- @Override
- protected String paginatorRowsKey() {
- return Constants.PREF_RESOURCE_HISTORY_CONF_PAGINATOR_ROWS;
- }
-
- protected abstract void viewConfiguration(ResourceHistoryConfTO resHistoryTO, AjaxRequestTarget target);
-
- @Override
- protected void resultTableCustomChanges(
- final AjaxDataTablePanel.Builder<ResourceHistoryConfTO, String> resultTableBuilder) {
- resultTableBuilder.setMultiLevelPanel(baseModal, multiLevelPanelRef);
- }
-
- @Override
- protected RHConfProvider dataProvider() {
- return new RHConfProvider(rows);
- }
-
- @Override
- public void onEvent(final IEvent<?> event) {
- super.onEvent(event);
- if (event.getPayload() instanceof WizardMgtPanel.ExitEvent && modal != null) {
- final AjaxRequestTarget target = WizardMgtPanel.ExitEvent.class.cast(event.getPayload()).getTarget();
- baseModal.show(false);
- baseModal.close(target);
- }
- }
-
- protected class RHConfProvider extends DirectoryDataProvider<ResourceHistoryConfTO> {
-
- private static final long serialVersionUID = -5244315453787001412L;
-
- private final SortableDataProviderComparator<ResourceHistoryConfTO> comparator;
-
- public RHConfProvider(final int paginatorRows) {
- super(paginatorRows);
-
- setSort("creation", SortOrder.ASCENDING);
- comparator = new SortableDataProviderComparator<>(this);
- }
-
- @Override
- public Iterator<ResourceHistoryConfTO> iterator(final long first, final long count) {
- final List<ResourceHistoryConfTO> configurations = restClient.list(entityKey);
-
- Collections.sort(configurations, comparator);
- return configurations.iterator();
- }
-
- @Override
- public long size() {
- return restClient.list(entityKey).size();
- }
-
- @Override
- public IModel<ResourceHistoryConfTO> model(final ResourceHistoryConfTO object) {
- return new CompoundPropertyModel<>(object);
- }
- }
-}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
index eb42741..79b2607 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
@@ -42,13 +42,18 @@ import org.apache.syncope.client.console.wizards.AjaxWizard;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
import org.apache.syncope.client.console.wizards.any.AnyWrapper;
import org.apache.syncope.client.console.wizards.any.UserWrapper;
+import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.patch.UserPatch;
import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.syncope.common.rest.api.service.UserSelfService;
import org.apache.wicket.PageReference;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.event.Broadcast;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
@@ -155,7 +160,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
@Override
public ActionsPanel<UserTO> getActions(final IModel<UserTO> model) {
final ActionsPanel<UserTO> panel = super.getActions(model);
-
+
panel.add(new ActionLink<UserTO>() {
private static final long serialVersionUID = -7978723352517770644L;
@@ -164,7 +169,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
send(UserDirectoryPanel.this, Broadcast.EXACT,
new AjaxWizard.EditItemActionEvent<>(
- new UserWrapper(UserRestClient.class.cast(restClient).read(model.getObject().getKey())),
+ new UserWrapper(restClient.read(model.getObject().getKey())),
target));
}
}, ActionType.EDIT,
@@ -177,27 +182,8 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
@Override
public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
- UserTO clone = SerializationUtils.clone(model.getObject());
- clone.setKey(null);
- clone.setUsername(model.getObject().getUsername() + "_clone");
- send(UserDirectoryPanel.this, Broadcast.EXACT,
- new AjaxWizard.NewItemActionEvent<>(new UserWrapper(clone), target));
- }
-
- @Override
- protected boolean statusCondition(final UserTO modelObject) {
- return addAjaxLink.isVisibleInHierarchy() && realm.startsWith(SyncopeConstants.ROOT_REALM);
- }
- }, ActionType.CLONE, StandardEntitlement.USER_CREATE).setRealm(realm);
-
- panel.add(new ActionLink<UserTO>() {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
try {
- UserRestClient.class.cast(restClient).mustChangePassword(
+ restClient.mustChangePassword(
model.getObject().getETagValue(),
!model.getObject().isMustChangePassword(),
model.getObject().getKey());
@@ -295,7 +281,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
@Override
public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
- model.setObject(UserRestClient.class.cast(restClient).read(model.getObject().getKey()));
+ model.setObject(restClient.read(model.getObject().getKey()));
IModel<AnyWrapper<UserTO>> formModel = new CompoundPropertyModel<>(
new AnyWrapper<>(model.getObject()));
altDefaultModal.setFormModel(formModel);
@@ -351,7 +337,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
@Override
public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
- model.setObject(UserRestClient.class.cast(restClient).read(model.getObject().getKey()));
+ model.setObject(restClient.read(model.getObject().getKey()));
target.add(wizardWrapperModal.setContent(
new LinkedAccountModalPanel(wizardWrapperModal, model, pageRef, false)));
wizardWrapperModal.header(new ResourceModel("linkedAccounts.title"));
@@ -368,20 +354,72 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
@Override
public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
- IModel<UserWrapper> formModel = new CompoundPropertyModel<>(
- new UserWrapper(new UserRestClient().read(model.getObject().getKey())));
- target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
- altDefaultModal,
- pageRef,
- formModel.getObject().getInnerObject())));
+ model.setObject(restClient.read(model.getObject().getKey()));
+ target.add(altDefaultModal.setContent(new AuditHistoryModal<UserTO>(
+ altDefaultModal,
+ AuditElements.EventCategoryType.LOGIC,
+ "UserLogic",
+ model.getObject(),
+ StandardEntitlement.USER_UPDATE,
+ pageRef) {
+
+ private static final long serialVersionUID = 959378158400669867L;
+
+ @Override
+ protected void restore(final UserTO updated, final AjaxRequestTarget target) {
+ // The original audit record masks the password and the security
+ // answer; so we cannot use the audit record to resurrect the entry based on mask data.
+ //
+ // The method behavior below will reset the audit record such that the current security
+ // answer and the password for the object are always maintained, and such properties for the
+ // user cannot be restored using audit records.
+ UserTO original = model.getObject();
+ try {
+ UserPatch userPatch = AnyOperations.diff(updated, original, false);
+ userPatch.setPassword(null);
+ userPatch.setSecurityAnswer(null);
+ ProvisioningResult<UserTO> result = restClient.update(original.getETagValue(), userPatch);
+ model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
+
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (Exception e) {
+ LOG.error("While restoring user {}", model.getObject().getKey(), e);
+ SyncopeConsoleSession.get().error(
+ StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
+ throw new WicketRuntimeException(e);
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }));
altDefaultModal.header(new Model<>(
- getString("auditHistory.title", new Model<>(new AnyWrapper<>(model.getObject())))));
+ getString("auditHistory.title", new Model<>(new AnyWrapper<>(model.getObject())))));
altDefaultModal.show(true);
}
- }, ActionType.VIEW_AUDIT_HISTORY, StandardEntitlement.AUDIT_LIST).
- setRealms(realm, model.getObject().getDynRealms());
+ }, ActionType.VIEW_AUDIT_HISTORY,
+ String.format("%s,%s", StandardEntitlement.USER_READ, StandardEntitlement.AUDIT_LIST)).
+ setRealms(realm, model.getObject().getDynRealms());
+
+ panel.add(new ActionLink<UserTO>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final UserTO ignore) {
+ UserTO clone = SerializationUtils.clone(model.getObject());
+ clone.setKey(null);
+ clone.setUsername(model.getObject().getUsername() + "_clone");
+ send(UserDirectoryPanel.this, Broadcast.EXACT,
+ new AjaxWizard.NewItemActionEvent<>(new UserWrapper(clone), target));
+ }
+
+ @Override
+ protected boolean statusCondition(final UserTO modelObject) {
+ return addAjaxLink.isVisibleInHierarchy() && realm.startsWith(SyncopeConstants.ROOT_REALM);
+ }
+ }, ActionType.CLONE, StandardEntitlement.USER_CREATE).setRealm(realm);
panel.add(new ActionLink<UserTO>() {
@@ -395,7 +433,7 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient
SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (Exception e) {
- LOG.error("While deleting object {}", model.getObject().getKey(), e);
+ LOG.error("While deleting user {}", model.getObject().getKey(), e);
SyncopeConsoleSession.get().error(
StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
index 3a14f41..5160359 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.policies;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
@@ -77,8 +76,6 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel
private static final long serialVersionUID = 4984337552918213290L;
- private static final ObjectMapper MAPPER = new ObjectMapper();
-
private final BaseModal<T> baseModal;
private final PolicyType type;
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
index 855837e..982a496 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
@@ -38,6 +38,7 @@ import org.apache.syncope.common.lib.types.ImplementationEngine;
import org.apache.syncope.common.lib.types.ImplementationType;
import org.apache.syncope.common.lib.types.PolicyType;
import org.apache.wicket.PageReference;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.wizard.WizardModel;
@@ -93,7 +94,7 @@ public class PolicyRuleWizardBuilder extends AjaxWizardBuilder<PolicyRuleWrapper
rule.setBody(MAPPER.writeValueAsString(modelObject.getConf()));
implementationClient.update(rule);
} catch (Exception e) {
- throw new RuntimeException(e);
+ throw new WicketRuntimeException(e);
}
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java
index 4f86f93..23155c0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java
@@ -54,6 +54,7 @@ import org.apache.syncope.common.lib.types.ImplementationType;
import org.apache.syncope.common.lib.types.PolicyType;
import org.apache.syncope.common.lib.types.SchemaType;
import org.apache.wicket.PageReference;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.panel.Panel;
@@ -156,7 +157,7 @@ public class ProvisioningPolicyModalPanel extends AbstractModalPanel<Provisionin
try {
implRestClient.update(rule.getImpl());
} catch (Exception e) {
- throw new RuntimeException(e);
+ throw new WicketRuntimeException(e);
}
}
});
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java
index 7b7edd1..5b17389 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.reports;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
@@ -73,8 +72,6 @@ public class ReportletDirectoryPanel extends DirectoryPanel<
private static final long serialVersionUID = 4984337552918213290L;
- private static final ObjectMapper MAPPER = new ObjectMapper();
-
private final BaseModal<ReportTO> baseModal;
private final String report;
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java
index 17785b0..5b43f30 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java
@@ -34,6 +34,7 @@ import org.apache.syncope.common.lib.to.ReportTO;
import org.apache.syncope.common.lib.types.ImplementationEngine;
import org.apache.syncope.common.lib.types.ImplementationType;
import org.apache.wicket.PageReference;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.wizard.WizardModel;
@@ -70,7 +71,7 @@ public class ReportletWizardBuilder extends AjaxWizardBuilder<ReportletWrapper>
reportlet.setBody(MAPPER.writeValueAsString(modelObject.getConf()));
implementationClient.update(reportlet);
} catch (Exception e) {
- throw new RuntimeException(e);
+ throw new WicketRuntimeException(e);
}
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AuditHistoryRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AuditHistoryRestClient.java
index fd3da6a..8666aa1 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AuditHistoryRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AuditHistoryRestClient.java
@@ -18,41 +18,55 @@
*/
package org.apache.syncope.client.console.rest;
+import java.util.List;
import org.apache.syncope.common.lib.to.AuditEntryTO;
import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.syncope.common.rest.api.beans.AuditQuery;
import org.apache.syncope.common.rest.api.service.AuditService;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
-import java.util.List;
-
public class AuditHistoryRestClient extends BaseRestClient {
+
private static final long serialVersionUID = -381814125643246243L;
- public List<AuditEntryTO> search(final String key,
- final int page,
- final int size,
- final SortParam<String> sort,
- final List<String> events,
- final AuditElements.Result result) {
- AuditQuery query = new AuditQuery.Builder(key)
- .size(size)
- .page(page)
- .events(events)
- .result(result)
- .orderBy(toOrderBy(sort))
- .build();
+ public List<AuditEntryTO> search(
+ final String key,
+ final int page,
+ final int size,
+ final AuditElements.EventCategoryType type,
+ final String category,
+ final List<String> events,
+ final AuditElements.Result result,
+ final SortParam<String> sort) {
+
+ AuditQuery query = new AuditQuery.Builder(key).
+ size(size).
+ page(page).
+ type(type).
+ category(category).
+ events(events).
+ result(result).
+ orderBy(toOrderBy(sort)).
+ build();
+
return getService(AuditService.class).search(query).getResult();
}
- public int count(final String key,
- final List<String> events,
- final AuditElements.Result result) {
- AuditQuery query = new AuditQuery.Builder(key)
- .events(events)
- .result(result)
- .build();
+ public int count(
+ final String key,
+ final AuditElements.EventCategoryType type,
+ final String category,
+ final List<String> events,
+ final AuditElements.Result result) {
+
+ AuditQuery query = new AuditQuery.Builder(key).
+ page(1).
+ size(1).
+ type(type).
+ category(category).
+ events(events).
+ result(result).
+ build();
return getService(AuditService.class).search(query).getTotalCount();
}
}
-
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorHistoryRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorHistoryRestClient.java
deleted file mode 100644
index 9178569..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ConnectorHistoryRestClient.java
+++ /dev/null
@@ -1,50 +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.client.console.rest;
-
-import java.util.Collections;
-import java.util.List;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
-import org.apache.syncope.common.rest.api.service.ConnectorHistoryService;
-
-/**
- * Console client for invoking Rest Connector configuration history services.
- */
-public class ConnectorHistoryRestClient extends BaseRestClient {
-
- private static final long serialVersionUID = -1917949374689773018L;
-
- public List<ConnInstanceHistoryConfTO> list(final String key) {
- List<ConnInstanceHistoryConfTO> connHistoryConfs = Collections.<ConnInstanceHistoryConfTO>emptyList();
- try {
- connHistoryConfs = getService(ConnectorHistoryService.class).list(key);
- } catch (Exception e) {
- LOG.error("While reading connector history configuration instances", e);
- }
- return connHistoryConfs;
- }
-
- public void delete(final String key) {
- getService(ConnectorHistoryService.class).delete(key);
- }
-
- public void restore(final String key) {
- getService(ConnectorHistoryService.class).restore(key);
- }
-}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceHistoryRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceHistoryRestClient.java
deleted file mode 100644
index 9efb783..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceHistoryRestClient.java
+++ /dev/null
@@ -1,50 +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.client.console.rest;
-
-import java.util.Collections;
-import java.util.List;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
-import org.apache.syncope.common.rest.api.service.ResourceHistoryService;
-
-/**
- * Console client for invoking Rest Resource configuration history services.
- */
-public class ResourceHistoryRestClient extends BaseRestClient {
-
- private static final long serialVersionUID = -5722829010510310887L;
-
- public List<ResourceHistoryConfTO> list(final String key) {
- List<ResourceHistoryConfTO> resHistoryConfs = Collections.<ResourceHistoryConfTO>emptyList();
- try {
- resHistoryConfs = getService(ResourceHistoryService.class).list(key);
- } catch (Exception e) {
- LOG.error("While reading resource history configuration instances", e);
- }
- return resHistoryConfs;
- }
-
- public void delete(final String key) {
- getService(ResourceHistoryService.class).delete(key);
- }
-
- public void restore(final String key) {
- getService(ResourceHistoryService.class).restore(key);
- }
-}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
index 310aa13..9f79016 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
@@ -18,14 +18,15 @@
*/
package org.apache.syncope.client.console.topology;
+import com.fasterxml.jackson.databind.ObjectMapper;
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import java.io.Serializable;
import java.text.MessageFormat;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.audit.AuditHistoryModal;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.panels.HistoryConfList;
import org.apache.syncope.client.console.panels.ConnObjects;
import org.apache.syncope.client.console.wizards.resources.ConnectorWizardBuilder;
import org.apache.syncope.client.console.wizards.resources.ResourceWizardBuilder;
@@ -44,9 +45,8 @@ import org.apache.syncope.client.console.wizards.resources.AbstractResourceWizar
import org.apache.syncope.client.console.wizards.resources.ResourceProvisionPanel;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.common.lib.to.ItemTO;
-import org.apache.syncope.common.lib.to.ProvisionTO;
import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.types.AuditElements;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -68,6 +68,8 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
private static final long serialVersionUID = -2025535531121434056L;
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+
private final ResourceRestClient resourceRestClient = new ResourceRestClient();
private final ConnectorRestClient connectorRestClient = new ConnectorRestClient();
@@ -335,11 +337,33 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
@Override
public void onClick(final AjaxRequestTarget target) {
- String connKey = String.class.cast(node.getKey());
- ConnInstanceTO connInstance = connectorRestClient.read(connKey);
-
- target.add(historyModal.setContent(
- new HistoryConfList<>(historyModal, connKey, pageRef, connInstance)));
+ ConnInstanceTO modelObject = connectorRestClient.read(node.getKey());
+
+ target.add(historyModal.setContent(new AuditHistoryModal<ConnInstanceTO>(
+ historyModal,
+ AuditElements.EventCategoryType.LOGIC,
+ "ConnectorLogic",
+ modelObject,
+ StandardEntitlement.CONNECTOR_UPDATE,
+ pageRef) {
+
+ private static final long serialVersionUID = -3225348282675513648L;
+
+ @Override
+ protected void restore(final ConnInstanceTO updated, final AjaxRequestTarget target) {
+ try {
+ connectorRestClient.update(updated);
+
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ toggle(target, false);
+ } catch (Exception e) {
+ LOG.error("While restoring connector {}", node.getKey(), e);
+ SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }));
historyModal.header(
new Model<>(MessageFormat.format(getString("connector.menu.history"), node.getDisplayName())));
@@ -353,7 +377,8 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
}
};
- MetaDataRoleAuthorizationStrategy.authorize(history, RENDER, StandardEntitlement.CONNECTOR_HISTORY_LIST);
+ MetaDataRoleAuthorizationStrategy.authorize(history, RENDER,
+ String.format("%s,%s", StandardEntitlement.CONNECTOR_READ, StandardEntitlement.AUDIT_LIST));
fragment.add(history);
return fragment;
@@ -566,11 +591,33 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
@Override
public void onClick(final AjaxRequestTarget target) {
- String resourceKey = String.class.cast(node.getKey());
- final ResourceTO modelObject = resourceRestClient.read(String.class.cast(node.getKey()));
+ ResourceTO modelObject = resourceRestClient.read(node.getKey());
- target.add(historyModal.setContent(
- new HistoryConfList<>(historyModal, resourceKey, pageRef, modelObject)));
+ target.add(historyModal.setContent(new AuditHistoryModal<ResourceTO>(
+ historyModal,
+ AuditElements.EventCategoryType.LOGIC,
+ "ResourceLogic",
+ modelObject,
+ StandardEntitlement.RESOURCE_UPDATE,
+ pageRef) {
+
+ private static final long serialVersionUID = -3712506022627033811L;
+
+ @Override
+ protected void restore(final ResourceTO updated, final AjaxRequestTarget target) {
+ try {
+ resourceRestClient.update(updated);
+
+ SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+ toggle(target, false);
+ } catch (Exception e) {
+ LOG.error("While restoring resource {}", node.getKey(), e);
+ SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ }
+ ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+ }
+ }));
historyModal.header(
new Model<>(MessageFormat.format(getString("resource.menu.history"), node.getDisplayName())));
@@ -584,7 +631,8 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
}
};
- MetaDataRoleAuthorizationStrategy.authorize(history, RENDER, StandardEntitlement.RESOURCE_HISTORY_LIST);
+ MetaDataRoleAuthorizationStrategy.authorize(history, RENDER,
+ String.format("%s,%s", StandardEntitlement.RESOURCE_READ, StandardEntitlement.AUDIT_LIST));
fragment.add(history);
// [SYNCOPE-1161] - Option to clone a resource
@@ -600,20 +648,16 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
// reset some resource objects keys
if (resource.getOrgUnit() != null) {
resource.getOrgUnit().setKey(null);
- for (ItemTO item : resource.getOrgUnit().getItems()) {
- item.setKey(null);
- }
+ resource.getOrgUnit().getItems().forEach(item -> item.setKey(null));
}
- for (ProvisionTO provision : resource.getProvisions()) {
+ resource.getProvisions().forEach(provision -> {
provision.setKey(null);
if (provision.getMapping() != null) {
- for (ItemTO item : provision.getMapping().getItems()) {
- item.setKey(null);
- }
+ provision.getMapping().getItems().forEach(item -> item.setKey(null));
provision.getMapping().getLinkingItems().clear();
}
provision.getVirSchemas().clear();
- }
+ });
resourceRestClient.create(resource);
// refresh Topology
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
index 9cfa769..ecd70d0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
@@ -50,9 +50,15 @@ public class AjaxFallbackDataTable<T extends Serializable, S> extends DataTable<
private ActionLinksTogglePanel<T> togglePanel;
- public AjaxFallbackDataTable(final String id, final List<? extends IColumn<T, S>> columns,
- final ISortableDataProvider<T, S> dataProvider, final int rowsPerPage, final WebMarkupContainer container) {
+ public AjaxFallbackDataTable(
+ final String id,
+ final List<? extends IColumn<T, S>> columns,
+ final ISortableDataProvider<T, S> dataProvider,
+ final int rowsPerPage,
+ final WebMarkupContainer container) {
+
super(id, columns, dataProvider, rowsPerPage);
+
setOutputMarkupId(true);
setVersioned(false);
@@ -67,7 +73,7 @@ public class AjaxFallbackDataTable<T extends Serializable, S> extends DataTable<
final String borderId, final S property, final ISortStateLocator<S> locator) {
return new AjaxFallbackOrderByBorder<S>(borderId, property, locator) {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = -5729452929468028615L;
@Override
protected void onAjaxClick(final AjaxRequestTarget target) {
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
index 67afe12..d62156f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
@@ -77,7 +77,6 @@ public abstract class ActionLink<T extends Serializable> implements Serializable
EXPORT_PDF("read"),
EXPORT_RTF("read"),
EXPORT_XML("read"),
- RESTORE("import"),
SUSPEND("update"),
REACTIVATE("update"),
RELOAD("import"),
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
index c708624..d269c0a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
@@ -60,6 +60,7 @@ public final class ActionsPanel<T extends Serializable> extends Panel {
final ActionLink<T> link,
final ActionLink.ActionType type,
final String entitlements) {
+
return add(link, type, entitlements, false);
}
@@ -69,7 +70,7 @@ public final class ActionsPanel<T extends Serializable> extends Panel {
final String entitlements,
final boolean onConfirm) {
- final Action<T> action = new Action<>(link, type);
+ Action<T> action = new Action<>(link, type);
action.setEntitlements(entitlements);
action.setOnConfirm(onConfirm);
actions.add(action);
@@ -77,22 +78,21 @@ public final class ActionsPanel<T extends Serializable> extends Panel {
}
public ActionsPanel<T> clone(final String componentId, final IModel<T> model) {
- final ActionsPanel<T> panel = new ActionsPanel<>(componentId, model);
+ ActionsPanel<T> panel = new ActionsPanel<>(componentId, model);
panel.actions.addAll(actions);
return panel;
}
/**
* Use this with toggle panels.
+ *
* @param componentId Component Id.
* @param model Model.
* @return Actions panel.
*/
public ActionsPanel<T> cloneWithLabels(final String componentId, final IModel<T> model) {
- final ActionsPanel<T> panel = new ActionsPanel<>(componentId, model);
- for (Action<T> action : actions) {
- panel.actions.add(action.showLabel());
- }
+ ActionsPanel<T> panel = new ActionsPanel<>(componentId, model);
+ actions.forEach(action -> panel.actions.add(action.showLabel()));
return panel;
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
index c84a05b..d8938e3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
@@ -51,6 +51,7 @@ import org.apache.wicket.Application;
import org.apache.wicket.PageReference;
import org.apache.wicket.Session;
import org.apache.wicket.ThreadContext;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
@@ -390,7 +391,7 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard
return res.getRight();
} catch (InterruptedException | ExecutionException e) {
- throw new RuntimeException(e);
+ throw new WicketRuntimeException(e);
}
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
index 57b8226..0e5bc89 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
@@ -359,9 +359,7 @@ public abstract class WizardMgtPanel<T extends Serializable> extends Panel imple
* @param modal target modal.
*/
protected void setWindowClosedReloadCallback(final BaseModal<?> modal) {
- modal.setWindowClosedCallback(target -> {
- modal.show(false);
- });
+ modal.setWindowClosedCallback(target -> modal.show(false));
}
/**
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWrapper.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWrapper.java
index 3855bd8..8611db3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWrapper.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWrapper.java
@@ -38,5 +38,4 @@ public class AnyObjectWrapper extends AnyWrapper<AnyObjectTO> {
public AnyObjectTO getPreviousAnyObjectTO() {
return previousAnyObjectTO;
}
-
}
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWrapper.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWrapper.java
index 85698ca..095cef5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWrapper.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWrapper.java
@@ -34,5 +34,4 @@ public class AnyWrapper<T extends AnyTO> implements Serializable {
public T getInnerObject() {
return anyTO;
}
-
}
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails.html b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails.html
similarity index 72%
rename from client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails.html
rename to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails.html
index da89934..78e44ed 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails.html
@@ -19,9 +19,11 @@ under the License.
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
- <form wicket:id="form">
- <span wicket:id="compareDropdown"></span>
- </form>
+ <div style="padding-left: 1%;padding-right: 1%;text-align: center;">
+ <div class="pull-left"><strong><span wicket:id="current"/></strong></div>
+ <a href="#" wicket:id="restore" wicket:message="title:restore"><i class="fa fa-history fa-2x"></i></a>
+ <div class="pull-right"><strong><span wicket:id="previous"/></strong></div>
+ </div>
<div wicket:id="content"></div>
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails.properties
similarity index 94%
rename from client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails.properties
rename to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails.properties
index b1406fe..cec89d0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-history.view=History view
-compare=Compare with
current=Current
+previous=Previous
+restore=Restore
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_fr_CA.properties
similarity index 92%
copy from client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
copy to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_fr_CA.properties
index e2abe89..6073f49 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_fr_CA.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-who=Who
-date=Date
-audit.diff.view=Configuration
+current=Courant
+previous=Pr\u00e9c\u00e9dent
+restore=Restaurer
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_it.properties
similarity index 93%
copy from client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
copy to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_it.properties
index e2abe89..7af93d8 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_it.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-who=Who
-date=Date
-audit.diff.view=Configuration
+current=Attuale
+previous=Precedente
+restore=Ripristina
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_ja.properties
similarity index 94%
rename from client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_ja.properties
rename to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_ja.properties
index b1406fe..cec89d0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_ja.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_ja.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-history.view=History view
-compare=Compare with
current=Current
+previous=Previous
+restore=Restore
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_pt_BR.properties
similarity index 94%
rename from client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_pt_BR.properties
rename to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_pt_BR.properties
index b1406fe..cec89d0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_pt_BR.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-history.view=History view
-compare=Compare with
current=Current
+previous=Previous
+restore=Restore
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_ru.properties
similarity index 94%
rename from client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_ru.properties
rename to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_ru.properties
index b1406fe..cec89d0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryDetails_ru.properties
@@ -14,6 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-history.view=History view
-compare=Compare with
current=Current
+previous=Previous
+restore=Restore
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
index e2abe89..3896fbb 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
@@ -16,4 +16,4 @@
# under the License.
who=Who
date=Date
-audit.diff.view=Configuration
+audit.diff.view=History view
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_fr_CA.properties
similarity index 96%
copy from client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
copy to client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_fr_CA.properties
index e2abe89..c053b7b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_fr_CA.properties
@@ -16,4 +16,4 @@
# under the License.
who=Who
date=Date
-audit.diff.view=Configuration
+audit.diff.view=Vue historique
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_it.properties
index e2abe89..a6f4786 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_it.properties
@@ -16,4 +16,4 @@
# under the License.
who=Who
date=Date
-audit.diff.view=Configuration
+audit.diff.view=Vista storica
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ja.properties
index e2abe89..3896fbb 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ja.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ja.properties
@@ -16,4 +16,4 @@
# under the License.
who=Who
date=Date
-audit.diff.view=Configuration
+audit.diff.view=History view
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_pt_BR.properties
index e2abe89..3896fbb 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_pt_BR.properties
@@ -16,4 +16,4 @@
# under the License.
who=Who
date=Date
-audit.diff.view=Configuration
+audit.diff.view=History view
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ru.properties
index e2abe89..3896fbb 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/audit/AuditHistoryModal_ru.properties
@@ -16,4 +16,4 @@
# under the License.
who=Who
date=Date
-audit.diff.view=Configuration
+audit.diff.view=History view
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_it.properties
deleted file mode 100644
index e128bca..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/audit/HistoryAuditDetails_it.properties
+++ /dev/null
@@ -1,19 +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.
-history.view=Storico vista
-compare=paragonare con
-current=presente
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails.html
deleted file mode 100644
index da89934..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails.html
+++ /dev/null
@@ -1,29 +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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
-
- <form wicket:id="form">
- <span wicket:id="compareDropdown"></span>
- </form>
-
- <div wicket:id="content"></div>
-
- </wicket:panel>
-</html>
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails.properties
deleted file mode 100644
index 0abe803..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails.properties
+++ /dev/null
@@ -1,23 +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.
-creation=Creation date
-creator=Creator
-entityKey=Local ID
-history.view=History view
-resource=Resource
-compare=Compare with
-current=Current
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_fr_CA.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_fr_CA.properties
deleted file mode 100644
index 4977063..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_fr_CA.properties
+++ /dev/null
@@ -1,23 +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.
-creation=Date de cr�ation
-creator=Cr�� par
-entityKey=ID local
-history.view=Afficher historique
-resource=Ressource
-compare=Comparer avec
-current=Actuel
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_it.properties
deleted file mode 100644
index bac0d9c..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_it.properties
+++ /dev/null
@@ -1,23 +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.
-creation=Data di creazione
-creator=Creatore
-entityKey=ID locale
-history.view=Configurazione
-resource=Risorsa
-compare=Confronta con
-current=Corrente
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_ja.properties
deleted file mode 100644
index efe910c..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_ja.properties
+++ /dev/null
@@ -1,23 +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.
-creation=\u4f5c\u6210\u65e5
-creator=\u4f5c\u6210\u8005
-entityKey=\u30ed\u30fc\u30ab\u30eb ID
-history.view=\u5c65\u6b74\u30d3\u30e5\u30fc
-resource=\u30ea\u30bd\u30fc\u30b9
-compare=\u6bd4\u8f03...
-current=\u73fe\u5728
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_pt_BR.properties
deleted file mode 100644
index 192a559..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_pt_BR.properties
+++ /dev/null
@@ -1,23 +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.
-creation=Cria\u00e7\u00e3o
-creator=O Criador
-entityKey=ID local
-history.view=Configura\u00e7\u00e3o
-resource=Recurso
-compare=Compare com
-current=Atual
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_ru.properties
deleted file mode 100644
index 7b17b31..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfDetails_ru.properties
+++ /dev/null
@@ -1,23 +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.
-creation=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435
-creator=\u0442\u0432\u043e\u0440\u0435\u0446
-entityKey=\u041c\u0435\u0441\u0442\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440
-history.view=\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f
-resource=\u0420\u0435\u0441\u0443\u0440\u0441
-compare=\u0421\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441
-current=\u0422\u0435\u043a\u0443\u0449\u0438\u0439
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList.html
deleted file mode 100644
index 1cae5af..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList.html
+++ /dev/null
@@ -1,23 +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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <span wicket:id="history">[HISTORY]</span>
- </wicket:panel>
-</html>
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList.properties
deleted file mode 100644
index 5546931..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList.properties
+++ /dev/null
@@ -1,21 +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.
-creation=Creation date
-creator=Creator
-entityKey=Local ID
-history.diff.view=Configuration
-resource=Resource
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_fr_CA.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_fr_CA.properties
deleted file mode 100644
index 5a090f6..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_fr_CA.properties
+++ /dev/null
@@ -1,21 +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.
-creation=Date de cr�ation
-creator=Cr�� par
-entityKey=ID local
-history.diff.view=Configuration
-resource=Ressource
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_it.properties
deleted file mode 100644
index 88c8bb3..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_it.properties
+++ /dev/null
@@ -1,21 +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.
-creation=Data di creazione
-creator=Creatore
-entityKey=ID locale
-history.diff.view=Configurazione
-resource=Risorsa
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_ja.properties
deleted file mode 100644
index 991fa5f..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_ja.properties
+++ /dev/null
@@ -1,21 +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.
-creation=\u4f5c\u6210\u65e5
-creator=\u4f5c\u6210\u8005
-entityKey=\u30ed\u30fc\u30ab\u30eb ID
-history.diff.view=\u8a2d\u5b9a
-resource=\u30ea\u30bd\u30fc\u30b9
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_pt_BR.properties
deleted file mode 100644
index 813728d..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_pt_BR.properties
+++ /dev/null
@@ -1,21 +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.
-creation=Cria\u00e7\u00e3o
-creator=O Criador
-entityKey=ID local
-history.diff.view=Configura\u00e7\u00e3o
-resource=Recurso
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_ru.properties
deleted file mode 100644
index 4f278d7..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/HistoryConfList_ru.properties
+++ /dev/null
@@ -1,21 +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.
-creation=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435
-creator=\u0442\u0432\u043e\u0440\u0435\u0446
-entityKey=\u041c\u0435\u0441\u0442\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440
-history.diff.view=\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f
-resource=\u0420\u0435\u0441\u0443\u0440\u0441
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.properties
index be4d4d1..b197829 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.properties
@@ -134,8 +134,8 @@ execute.title=execute
execute.alt=execute icon
password_management.class=fa fa-shield
-password_management.title=password management
-password_management.alt=password management icon
+password_management.title=manage password
+password_management.alt=manage password icon
request_password_reset.class=fa fa-user-secret
request_password_reset.title=request password reset
@@ -185,10 +185,6 @@ export_xml.class=fa fa-file-excel-o
export_xml.title=export as xml
export_xml.alt=export as xml icon
-restore.class=fa fa-arrow-circle-down
-restore.title=restore
-restore.alt=restore icon
-
suspend.class=glyphicon glyphicon-ban-circle
suspend.title=suspend
suspend.alt=suspend icon
@@ -282,5 +278,5 @@ workflow_modeler.title=workflow modeler
workflow_modeler.alt=workflow modeler icon
view_audit_history.class=fa fa-history
-view_audit_history.title=history management
-view_audit_history.alt=history management icon
+view_audit_history.title=manage history
+view_audit_history.alt=manage history icon
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_fr_CA.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_fr_CA.properties
index b23f3e9..f2a3581 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_fr_CA.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_fr_CA.properties
@@ -16,202 +16,202 @@
# under the License.
mapping.class=fa fa-exchange
mapping.title=configuration
-mapping.alt=ic�ne configuration
+mapping.alt=ic\u00f4ne configuration
mustchangepassword.class=fa fa-lock
-mustchangepassword.title=case le mot de passe doit �tre chang�
-mustchangepassword.alt=case ic�ne pour changement de mot de passe
+mustchangepassword.title=case le mot de passe doit \u00eatre chang\u00e9
+mustchangepassword.alt=case ic\u00f4ne pour changement de mot de passe
set_latest_sync_token.class=fa fa-hourglass-start
-set_latest_sync_token.title=configurer jeton derni�re sync
-set_latest_sync_token.alt=ic�ne configurer jeton derni�re sync
+set_latest_sync_token.title=configurer jeton derni\u00e8re sync
+set_latest_sync_token.alt=ic\u00f4ne configurer jeton derni\u00e8re sync
remove_sync_token.class=fa fa-hourglass-o
remove_sync_token.title=retirer jeton sync
-remove_sync_token.alt=ic�ne retirer jeton sync
+remove_sync_token.alt=ic\u00f4ne retirer jeton sync
clone.class=fa fa-clone
clone.title=cloner
-clone.alt=ic�ne cl�ner
+clone.alt=ic\u00f4ne cl\u00f4ner
create.class=glyphicon glyphicon-plus
-create.title=cr�er
-create.alt=ic�ne cr�er
+create.title=cr\u00e9er
+create.alt=ic\u00f4ne cr\u00e9er
template.class=fa fa-list-alt
-template.title=mod�le
-template.alt=ic�ne mod�le
+template.title=mod\u00e8le
+template.alt=ic\u00f4ne mod\u00e8le
edit.class=glyphicon glyphicon-pencil
edit.title=modifier
-edit.alt=ic�ne modifier
+edit.alt=ic\u00f4ne modifier
manage_approval.class=fa fa-pencil-square-o
-manage_approval.title=g�rer
-manage_approval.alt=ic�ne approbation de gestion
+manage_approval.title=g\u00e9rer
+manage_approval.alt=ic\u00f4ne approbation de gestion
edit_approval.class=glyphicon glyphicon-pencil
edit_approval.title=modifier
-edit_approval.alt=ic�ne approbation de modification
+edit_approval.alt=ic\u00f4ne approbation de modification
type_extensions.class=fa fa-expand
type_extensions.title=extensions
-type_extensions.alt=ic�ne extensions
+type_extensions.alt=ic\u00f4ne extensions
fo_edit.class=fa fa-file-code-o
fo_edit.title=fo
-fo_edit.alt=ic�ne fo
+fo_edit.alt=ic\u00f4ne fo
fo_manage_approval.class=fa fa-file-code-o
fo_manage_approval.title=fo
-fo_manage_approval.alt=ic�ne fo
+fo_manage_approval.alt=ic\u00f4ne fo
fo_edit_approval.class=fa fa-file-code-o
fo_edit_approval.title=fo
-fo_edit_approval.alt=ic�ne fo
+fo_edit_approval.alt=ic\u00f4ne fo
html.class=fa fa-file-code-o
html.title=html
-html.alt=ic�ne html
+html.alt=ic\u00f4ne html
text.class=fa fa-file-text-o
text.title=texte
-text.alt=ic�ne texte
+text.alt=ic\u00f4ne texte
compose.class=fa fa-puzzle-piece
compose.title=composer
-compose.alt=ic�ne composer
+compose.alt=ic\u00f4ne composer
layout_edit.class=fa fa-object-ungroup
layout_edit.title=configuration
-layout_edit.alt=ic�ne configuration
+layout_edit.alt=ic\u00f4ne configuration
reset.class=fa fa-shield
-reset.title=r�initialiser
-reset.alt=ic�ne r�initialiser
+reset.title=r\u00e9initialiser
+reset.alt=ic\u00f4ne r\u00e9initialiser
enable.class=fa fa-toggle-on
-enable.title=g�rer statut
-enable.alt=ic�ne activer
+enable.title=g\u00e9rer statut
+enable.alt=ic\u00f4ne activer
not_found.class=fa fa-eye-slash
-not_found.title=non trouvďż˝
-not_found.alt=ic�ne non trouv�
+not_found.title=non trouv\u00e9
+not_found.alt=ic\u00f4ne non trouv\u00e9
view.class=fa fa-eye
view.title=afficher
-view.alt=ic�ne afficher
+view.alt=ic\u00f4ne afficher
view_executions.class=fa fa-eye
-view_executions.title=afficher ex�citions
-view_executions.alt=ic�ne afficher ex�cutions
+view_executions.title=afficher ex\u00e9citions
+view_executions.alt=ic\u00f4ne afficher ex\u00e9cutions
view_details.class=fa fa-info-circle
-view_details.title=afficher d�tails
-view_details.alt=ic�ne afficher d�tails
+view_details.title=afficher d\u00e9tails
+view_details.alt=ic\u00f4ne afficher d\u00e9tails
members.class=fa fa-users
members.title=membres
-members.alt=ic�ne memnres
+members.alt=ic\u00f4ne memnres
search.class=glyphicon glyphicon-search
search.title=rechercher
-search.alt=ic�ne recherche
+search.alt=ic\u00f4ne recherche
view_executions.class=fa fa-eye
-view_executions.title=ex�cutions
-view_executions.alt=afficher ic�ne ex�cutions
+view_executions.title=ex\u00e9cutions
+view_executions.alt=afficher ic\u00f4ne ex\u00e9cutions
view_details.class=fa fa-info-circle
-view_details.title=d�tails
-view_details.alt=ic�ne d�tails
+view_details.title=d\u00e9tails
+view_details.alt=ic\u00f4ne d\u00e9tails
delete.class=glyphicon glyphicon-minus
delete.title=supprimer
-delete.alt=ic�ne supprimer
+delete.alt=ic\u00f4ne supprimer
execute.class=fa fa-gear
-execute.title=ex�cuter
-execute.alt=ic�ne ex�cuter
+execute.title=ex\u00e9cuter
+execute.alt=ic\u00f4ne ex\u00e9cuter
password_management.class=fa fa-shield
password_management.title=gestion du mot de passe
-password_management.alt=ic�ne gestion du mot de passe
+password_management.alt=ic\u00f4ne gestion du mot de passe
request_password_reset.class=fa fa-user-secret
-request_password_reset.title=demande de r�initialisation du mot de passe
-request_password_reset.alt=ic�ne r�initialisation du mot de passe
+request_password_reset.title=demande de r\u00e9initialisation du mot de passe
+request_password_reset.alt=ic\u00f4ne r\u00e9initialisation du mot de passe
dryrun.class=fa fa-gears
-dryrun.title=test ďż˝ blanc
-dryrun.alt=ic�ne test � blanc
+dryrun.title=test \u00e0 blanc
+dryrun.alt=ic\u00f4ne test \u00e0 blanc
claim.class=fa fa-ticket
claim.title=obtenir
-claim.alt=ic�ne obtenir
+claim.alt=ic\u00f4ne obtenir
unclaim.class=fa fa-undo
-unclaim.title=c�der
-unclaim.alt=ic�ne c�der
+unclaim.title=c\u00e9der
+unclaim.alt=ic\u00f4ne c\u00e9der
select.class=glyphicon glyphicon-ok
-select.title=s�lectionner
-select.alt=ic�ne s�lectionner
+select.title=s\u00e9lectionner
+select.alt=ic\u00f4ne s\u00e9lectionner
close.class=fa fa-sign-out
close.title=fermer
-close.alt=ic�ne fermer
+close.alt=ic\u00f4ne fermer
export.class=fa fa-floppy-o
export.title=exporter
-export.alt=ic�ne exporter
+export.alt=ic\u00f4ne exporter
export_csv.class=fa fa-file-text-o
export_csv.title=exporter en csv
-export_csv.alt=ic�ne exporter en csv
+export_csv.alt=ic\u00f4ne exporter en csv
export_html.class=fa fa-file-code-o
export_html.title=exporter en html
-export_html.alt=ic�ne exporter en html
+export_html.alt=ic\u00f4ne exporter en html
export_pdf.class=fa fa-file-pdf-o
export_pdf.title=exporter en pdf
-export_pdf.alt=ic�ne exporter en pdf
+export_pdf.alt=ic\u00f4ne exporter en pdf
export_rtf.class=fa fa-file-word-o
export_rtf.title=exporter en rtf
-export_rtf.alt=ic�ne exporter en rtf
+export_rtf.alt=ic\u00f4ne exporter en rtf
export_xml.class=fa fa-file-excel-o
export_xml.title=exporter en xml
-export_xml.alt=ic�ne exporter en xml
-restore.class=fa fa-arrow-circle-down
-restore.title=restaurer
-restore.alt=ic�ne restaurer
+export_xml.alt=ic\u00f4ne exporter en xml
suspend.class=glyphicon glyphicon-ban-circle
suspend.title=interrompre
-suspend.alt=ic�ne interrompre
+suspend.alt=ic\u00f4ne interrompre
reactivate.class=glyphicon glyphicon-ok-sign
-reactivate.title=r�activer
-reactivate.alt=ic�ne r�activer
-reload.class=fa fa-r�p�ter
+reactivate.title=r\u00e9activer
+reactivate.alt=ic\u00f4ne r\u00e9activer
+reload.class=fa fa-r\u00e9p\u00e9ter
reload.title=recharger
-reload.alt=ic�ne recharger
+reload.alt=ic\u00f4ne recharger
change_view.class=fa fa-list
change_view.title=changer affichage
-change_view.alt=ic�ne changer affichage
+change_view.alt=ic\u00f4ne changer affichage
unlink.class=fa fa-unlink
unlink.title=dissocier
-unlink.alt=ic�ne dissocier
+unlink.alt=ic\u00f4ne dissocier
link.class=fa fa-link
link.title=lien
-link.alt=ic�ne lien
+link.alt=ic\u00f4ne lien
unassign.class=glyphicon glyphicon-resize-full
-unassign.title=d�assigner
-unassign.alt=ic�ne d�assigner
+unassign.title=d\u00e9assigner
+unassign.alt=ic\u00f4ne d\u00e9assigner
assign.class=glyphicon glyphicon-resize-small
assign.title=assigner
-assign.alt=ic�ne assigner
+assign.alt=ic\u00f4ne assigner
deprovision.class=glyphicon glyphicon-fast-backward
-deprovision.title=d�sattribution
-deprovision.alt=ic�ne d�sattribution
+deprovision.title=d\u00e9sattribution
+deprovision.alt=ic\u00f4ne d\u00e9sattribution
provision.class=glyphicon glyphicon-fast-forward
provision.title=provision
-provision.alt=ic�ne provision
+provision.alt=ic\u00f4ne provision
deprovision_members.class=glyphicon glyphicon-fast-backward
deprovision_members.title=Retirer des membres
-deprovision_members.alt=ic�ne retirer des membres
+deprovision_members.alt=ic\u00f4ne retirer des membres
provision_members.class=glyphicon glyphicon-fast-forward
-provision_members.title=faire adh�rer membres
-provision_members.alt=ic�ne faire adh�rer membres
+provision_members.title=faire adh\u00e9rer membres
+provision_members.alt=ic\u00f4ne faire adh\u00e9rer membres
reconciliation_push.class=fa fa-chevron-circle-right
reconciliation_push.title=push
-reconciliation_push.alt=ic�ne push r�conciliation
+reconciliation_push.alt=ic\u00f4ne push r\u00e9conciliation
reconciliation_pull.class=fa fa-chevron-circle-left
reconciliation_pull.title=pull
-reconciliation_pull.alt=ic�ne pull r�conciliation
+reconciliation_pull.alt=ic\u00f4ne pull r\u00e9conciliation
manage_resources.class=fa fa-sitemap
-manage_resources.title=g�rer ressources
-manage_resources.alt=ic�ne g�rer ressources
+manage_resources.title=g\u00e9rer ressources
+manage_resources.alt=ic\u00f4ne g\u00e9rer ressources
manage_users.class=fa fa-users
-manage_users.title=g�rer utilisateurs
-manage_users.alt=ic�ne g�rer utilisateurs
+manage_users.title=g\u00e9rer utilisateurs
+manage_users.alt=ic\u00f4ne g\u00e9rer utilisateurs
manage_groups.class=fa fa-users
-manage_groups.title=g�rer groupes
-manage_groups.alt=ic�ne g�rer groupes
+manage_groups.title=g\u00e9rer groupes
+manage_groups.alt=ic\u00f4ne g\u00e9rer groupes
propagation_tasks.class=fa fa-arrow-right
-propagation_tasks.title=t�ches de propagation
-propagation_tasks.alt=ic�ne t�ches de propagation
+propagation_tasks.title=t\u00e2ches de propagation
+propagation_tasks.alt=ic\u00f4ne t\u00e2ches de propagation
notification_tasks.class=fa fa-envelope-o
-notification_tasks.title=t�ches de notification
-notification_tasks.alt=ic�ne t�ches de notification
+notification_tasks.title=t\u00e2ches de notification
+notification_tasks.alt=ic\u00f4ne t\u00e2ches de notification
zoom_in.class=fa fa-search-plus
zoom_in.title=zoom-in
-zoom_in.alt=ic�ne zoom-in
+zoom_in.alt=ic\u00f4ne zoom-in
zoom_out.class=fa fa-search-minus
zoom_out.title=zoom-out
-zoom_out.alt=ic�ne zoom-out
+zoom_out.alt=ic\u00f4ne zoom-out
manage_accounts.class=fa fa-users
-manage_accounts.title=g�rer comptes
-manage_accounts.alt=ic�ne g�rer groupes
+manage_accounts.title=g\u00e9rer comptes
+manage_accounts.alt=ic\u00f4ne g\u00e9rer groupes
workflow_modeler.class=fa fa-picture-o
-workflow_modeler.title=mod�lisateur de workflow
-workflow_modeler.alt=ic�ne mod�lisateur de workflow
+workflow_modeler.title=mod\u00e9lisateur de workflow
+workflow_modeler.alt=ic\u00f4ne mod\u00e9lisateur de workflow
+view_audit_history.title=manage history
+view_audit_history.class=fa fa-history
+view_audit_history.alt=manage history icon
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_it.properties
index fe1457a..0155d4f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_it.properties
@@ -136,7 +136,7 @@ execute.alt=execute icon
password_management.class=fa fa-shield
password_management.title=gestione password
-password_management.alt=password management icon
+password_management.alt=manage password icon
request_password_reset.class=fa fa-user-secret
request_password_reset.title=richiedi password reset
@@ -182,10 +182,6 @@ export_xml.class=fa fa-file-excel-o
export_xml.title=export as xml
export_xml.alt=export as xml icon
-restore.class=fa fa-arrow-circle-down
-restore.title=ripristina
-restore.alt=restore icon
-
suspend.class=glyphicon glyphicon-ban-circle
suspend.title=sospendi
suspend.alt=suspend icon
@@ -279,3 +275,6 @@ manage_accounts.alt=manage accounts icon
view_audit_history.class=fa fa-history
view_audit_history.title=storico modifiche
view_audit_history.alt=storico modifiche icon
+unclaim.class=fa fa-undo
+unclaim.alt=unclaim icon
+unclaim.title=ritira
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ja.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ja.properties
index e23c35e..4f88ec0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ja.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ja.properties
@@ -182,10 +182,6 @@ export_xml.class=fa fa-file-excel-o
export_xml.title=xml \u3068\u3057\u3066\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
export_xml.alt=xml \u3068\u3057\u3066\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
-restore.class=fa fa-arrow-circle-down
-restore.title=\u5fa9\u5143
-restore.alt=\u5fa9\u5143
-
suspend.class=glyphicon glyphicon-ban-circle
suspend.title=\u30b5\u30b9\u30da\u30f3\u30c9
suspend.alt=\u30b5\u30b9\u30da\u30f3\u30c9
@@ -279,5 +275,8 @@ manage_accounts.title=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u7ba1\u7406\u3059\u30
manage_accounts.alt=\u30a2\u30ab\u30a6\u30f3\u30c8\u7ba1\u7406\u30a2\u30a4\u30b3\u30f3
view_audit_history.class=fa fa-history
-view_audit_history.title=history management
-view_audit_history.alt=history management icon
+view_audit_history.title=manage history
+view_audit_history.alt=manage history icon
+unclaim.class=fa fa-undo
+unclaim.alt=unclaim icon
+unclaim.title=unclaim
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_pt_BR.properties
index 9ca5a2a..0d2b609 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_pt_BR.properties
@@ -134,8 +134,8 @@ execute.title=execute
execute.alt=execute icon
password_management.class=fa fa-shield
-password_management.title=password management
-password_management.alt=password management icon
+password_management.title=manage password
+password_management.alt=manage password icon
request_password_reset.class=fa fa-user-secret
request_password_reset.title=request password reset
@@ -185,10 +185,6 @@ export_xml.class=fa fa-file-excel-o
export_xml.title=export as xml
export_xml.alt=export as xml icon
-restore.class=fa fa-arrow-circle-down
-restore.title=restore
-restore.alt=restore icon
-
suspend.class=glyphicon glyphicon-ban-circle
suspend.title=suspend
suspend.alt=suspend icon
@@ -284,5 +280,8 @@ manage_accounts.title=manage accounts
manage_accounts.alt=manage accounts icon
view_audit_history.class=fa fa-history
-view_audit_history.title=history management
-view_audit_history.alt=history management icon
+view_audit_history.title=manage history
+view_audit_history.alt=manage history icon
+workflow_modeler.class=fa fa-picture-o
+workflow_modeler.title=workflow modeler icon
+workflow_modeler.alt=workflow modeler icon
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ru.properties
index e3ac79b..146652e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel_ru.properties
@@ -135,8 +135,8 @@ execute.title=execute
execute.alt=execute icon
password_management.class=fa fa-shield
-password_management.title=password management
-password_management.alt=password management icon
+password_management.title=manage password
+password_management.alt=manage password icon
request_password_reset.class=fa fa-user-secret
request_password_reset.title=request password reset
@@ -182,10 +182,6 @@ export_xml.class=fa fa-file-excel-o
export_xml.title=export as xml
export_xml.alt=export as xml icon
-restore.class=fa fa-arrow-circle-down
-restore.title=restore
-restore.alt=restore icon
-
suspend.class=glyphicon glyphicon-ban-circle
suspend.title=suspend
suspend.alt=suspend icon
@@ -278,5 +274,8 @@ manage_accounts.title=manage accounts
manage_accounts.alt=manage accounts icon
view_audit_history.class=fa fa-history
-view_audit_history.title=history management
-view_audit_history.alt=history management icon
+view_audit_history.title=manage history
+view_audit_history.alt=manage history icon
+unclaim.class=fa fa-undo
+unclaim.alt=unclaim icon
+unclaim.title=unclaim
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractHistoryConf.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractHistoryConf.java
deleted file mode 100644
index 08c2293..0000000
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractHistoryConf.java
+++ /dev/null
@@ -1,70 +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.common.lib.to;
-
-import java.util.Date;
-import javax.ws.rs.PathParam;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlSeeAlso;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "abstractHistoryConf")
-@XmlType
-@XmlSeeAlso({ ConnInstanceHistoryConfTO.class, ResourceHistoryConfTO.class })
-public abstract class AbstractHistoryConf implements EntityTO {
-
- private static final long serialVersionUID = -8001640160293506651L;
-
- private String key;
-
- private String creator;
-
- private Date creation;
-
- @Override
- public String getKey() {
- return key;
- }
-
- @PathParam("key")
- @Override
- public void setKey(final String key) {
- this.key = key;
- }
-
- public String getCreator() {
- return creator;
- }
-
- public void setCreator(final String creator) {
- this.creator = creator;
- }
-
- public Date getCreation() {
- return creation == null
- ? null
- : new Date(creation.getTime());
- }
-
- public void setCreation(final Date creation) {
- this.creation = creation == null
- ? null
- : new Date(creation.getTime());
- }
-}
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceHistoryConfTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceHistoryConfTO.java
deleted file mode 100644
index 6583c54..0000000
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceHistoryConfTO.java
+++ /dev/null
@@ -1,40 +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.common.lib.to;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "connInstanceHistoryConf")
-@XmlType
-public class ConnInstanceHistoryConfTO extends AbstractHistoryConf {
-
- private static final long serialVersionUID = 8067539341757100479L;
-
- private ConnInstanceTO connInstanceTO;
-
- public ConnInstanceTO getConnInstanceTO() {
- return connInstanceTO;
- }
-
- public void setConnInstanceTO(final ConnInstanceTO connInstanceTO) {
- this.connInstanceTO = connInstanceTO;
- }
-
-}
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceHistoryConfTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceHistoryConfTO.java
deleted file mode 100644
index 5268299..0000000
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceHistoryConfTO.java
+++ /dev/null
@@ -1,39 +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.common.lib.to;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "resourceHistoryConf")
-@XmlType
-public class ResourceHistoryConfTO extends AbstractHistoryConf {
-
- private static final long serialVersionUID = -7308499697925335157L;
-
- private ResourceTO resourceTO;
-
- public ResourceTO getResourceTO() {
- return resourceTO;
- }
-
- public void setResourceTO(final ResourceTO resourceTO) {
- this.resourceTO = resourceTO;
- }
-}
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java
index 3d7bcf9..a68c69f 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java
@@ -146,12 +146,6 @@ public final class StandardEntitlement {
public static final String RESOURCE_LIST_CONNOBJECT = "RESOURCE_LIST_CONNOBJECT";
- public static final String RESOURCE_HISTORY_LIST = "RESOURCE_HISTORY_LIST";
-
- public static final String RESOURCE_HISTORY_RESTORE = "RESOURCE_HISTORY_RESTORE";
-
- public static final String RESOURCE_HISTORY_DELETE = "RESOURCE_HISTORY_DELETE";
-
public static final String CONNECTOR_LIST = "CONNECTOR_LIST";
public static final String CONNECTOR_CREATE = "CONNECTOR_CREATE";
@@ -164,12 +158,6 @@ public final class StandardEntitlement {
public static final String CONNECTOR_RELOAD = "CONNECTOR_RELOAD";
- public static final String CONNECTOR_HISTORY_LIST = "CONNECTOR_HISTORY_LIST";
-
- public static final String CONNECTOR_HISTORY_RESTORE = "CONNECTOR_HISTORY_RESTORE";
-
- public static final String CONNECTOR_HISTORY_DELETE = "CONNECTOR_HISTORY_DELETE";
-
public static final String CONFIGURATION_EXPORT = "CONFIGURATION_EXPORT";
public static final String CONFIGURATION_LIST = "CONFIGURATION_LIST";
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorHistoryService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorHistoryService.java
deleted file mode 100644
index c94799f..0000000
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorHistoryService.java
+++ /dev/null
@@ -1,82 +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.common.rest.api.service;
-
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
-import io.swagger.v3.oas.annotations.responses.ApiResponses;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import io.swagger.v3.oas.annotations.security.SecurityRequirements;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import java.util.List;
-import javax.validation.constraints.NotNull;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
-import org.apache.syncope.common.rest.api.RESTHeaders;
-
-/**
- * REST operations for connector configuration versioning.
- */
-@Tag(name = "ConnectorHistory")
-@SecurityRequirements({
- @SecurityRequirement(name = "BasicAuthentication"),
- @SecurityRequirement(name = "Bearer") })
-@Path("connectorsHistory")
-public interface ConnectorHistoryService extends JAXRSService {
-
- /**
- * Returns a list of all connector configuration history instances for the given connector instance key.
- *
- * @param connectorKey connector instance key
- * @return list of all connector configuration history instances for the given connector instance key
- */
- @GET
- @Path("{connectorKey}")
- @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
- List<ConnInstanceHistoryConfTO> list(@NotNull @PathParam("connectorKey") String connectorKey);
-
- /**
- * Restores the connector configuration history instance matching the provided key.
- *
- * @param key connector configuration history instance key to be restored
- */
- @ApiResponses(
- @ApiResponse(responseCode = "204", description = "Operation was successful"))
- @POST
- @Path("{key}")
- @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
- void restore(@NotNull @PathParam("key") String key);
-
- /**
- * Deletes the connector configuration history instance matching the provided key.
- *
- * @param key connector configuration history instance key to be deleted
- */
- @ApiResponses(
- @ApiResponse(responseCode = "204", description = "Operation was successful"))
- @DELETE
- @Path("{key}")
- @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
- void delete(@NotNull @PathParam("key") String key);
-}
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceHistoryService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceHistoryService.java
deleted file mode 100644
index 1024f6e..0000000
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceHistoryService.java
+++ /dev/null
@@ -1,82 +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.common.rest.api.service;
-
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
-import io.swagger.v3.oas.annotations.responses.ApiResponses;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import io.swagger.v3.oas.annotations.security.SecurityRequirements;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import java.util.List;
-import javax.validation.constraints.NotNull;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
-import org.apache.syncope.common.rest.api.RESTHeaders;
-
-/**
- * REST operations for resource configuration versioning.
- */
-@Tag(name = "ResourceHistory")
-@SecurityRequirements({
- @SecurityRequirement(name = "BasicAuthentication"),
- @SecurityRequirement(name = "Bearer") })
-@Path("resourcesHistory")
-public interface ResourceHistoryService extends JAXRSService {
-
- /**
- * Returns a list of all resource configuration history for the given resource key.
- *
- * @param resourceKey resource key
- * @return list of all resource configuration history for the given resource key
- */
- @GET
- @Path("{resourceKey}")
- @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
- List<ResourceHistoryConfTO> list(@NotNull @PathParam("resourceKey") String resourceKey);
-
- /**
- * Restores the resource configuration history matching the provided key.
- *
- * @param key resource configuration history key to be restored
- */
- @ApiResponses(
- @ApiResponse(responseCode = "204", description = "Operation was successful"))
- @POST
- @Path("{key}")
- @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
- void restore(@NotNull @PathParam("key") String key);
-
- /**
- * Deletes the resource configuration history matching the provided key.
- *
- * @param key resource configuration history key to be deleted
- */
- @ApiResponses(
- @ApiResponse(responseCode = "204", description = "Operation was successful"))
- @DELETE
- @Path("{key}")
- @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
- void delete(@NotNull @PathParam("key") String key);
-}
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorHistoryLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorHistoryLogic.java
deleted file mode 100644
index e3a22a8..0000000
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorHistoryLogic.java
+++ /dev/null
@@ -1,98 +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.logic;
-
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.stream.Collectors;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceHistoryConfDAO;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
-import org.apache.syncope.core.provisioning.api.data.ConnInstanceDataBinder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-@Component
-public class ConnectorHistoryLogic extends AbstractTransactionalLogic<ConnInstanceHistoryConfTO> {
-
- @Autowired
- private ConnInstanceHistoryConfDAO connInstanceHistoryConfDAO;
-
- @Autowired
- private ConnInstanceDAO connInstanceDAO;
-
- @Autowired
- private ConnInstanceDataBinder binder;
-
- @PreAuthorize("hasRole('" + StandardEntitlement.CONNECTOR_HISTORY_LIST + "')")
- @Transactional(readOnly = true)
- public List<ConnInstanceHistoryConfTO> list(final String key) {
- ConnInstance connInstance = connInstanceDAO.find(key);
- if (connInstance == null) {
- throw new NotFoundException("Connector '" + key + "'");
- }
-
- return connInstanceHistoryConfDAO.findByEntity(connInstance).stream().
- map(binder::getConnInstanceHistoryConfTO).collect(Collectors.toList());
- }
-
- @PreAuthorize("hasRole('" + StandardEntitlement.CONNECTOR_HISTORY_RESTORE + "')")
- public void restore(final String key) {
- ConnInstanceHistoryConf connInstanceHistoryConf = connInstanceHistoryConfDAO.find(key);
- if (connInstanceHistoryConf == null) {
- throw new NotFoundException("Connector History Conf '" + key + "'");
- }
-
- binder.update(connInstanceHistoryConf.getConf());
- }
-
- @PreAuthorize("hasRole('" + StandardEntitlement.CONNECTOR_HISTORY_DELETE + "')")
- public void delete(final String key) {
- ConnInstanceHistoryConf connInstanceHistoryConf = connInstanceHistoryConfDAO.find(key);
- if (connInstanceHistoryConf == null) {
- throw new NotFoundException("Connector History Conf '" + key + "'");
- }
-
- connInstanceHistoryConfDAO.delete(key);
- }
-
- @Override
- protected ConnInstanceHistoryConfTO resolveReference(final Method method, final Object... args)
- throws UnresolvedReferenceException {
-
- if (!"list".equals(method.getName())) {
- try {
- String key = (String) args[0];
- return binder.getConnInstanceHistoryConfTO(connInstanceHistoryConfDAO.find(key));
- } catch (Throwable ignore) {
- LOG.debug("Unresolved reference", ignore);
- throw new UnresolvedReferenceException(ignore);
- }
- }
-
- throw new UnresolvedReferenceException();
- }
-
-}
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceHistoryLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceHistoryLogic.java
deleted file mode 100644
index 42126fb..0000000
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceHistoryLogic.java
+++ /dev/null
@@ -1,98 +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.logic;
-
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.stream.Collectors;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceHistoryConfDAO;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
-import org.apache.syncope.core.provisioning.api.data.ResourceDataBinder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-@Component
-public class ResourceHistoryLogic extends AbstractTransactionalLogic<ResourceHistoryConfTO> {
-
- @Autowired
- private ExternalResourceHistoryConfDAO resourceHistoryConfDAO;
-
- @Autowired
- private ExternalResourceDAO resourceDAO;
-
- @Autowired
- private ResourceDataBinder binder;
-
- @PreAuthorize("hasRole('" + StandardEntitlement.RESOURCE_HISTORY_LIST + "')")
- @Transactional(readOnly = true)
- public List<ResourceHistoryConfTO> list(final String key) {
- ExternalResource resource = resourceDAO.find(key);
- if (resource == null) {
- throw new NotFoundException("Resource '" + key + "'");
- }
-
- return resourceHistoryConfDAO.findByEntity(resource).stream().
- map(binder::getResourceHistoryConfTO).collect(Collectors.toList());
- }
-
- @PreAuthorize("hasRole('" + StandardEntitlement.RESOURCE_HISTORY_RESTORE + "')")
- public void restore(final String key) {
- ExternalResourceHistoryConf resourceHistoryConf = resourceHistoryConfDAO.find(key);
- if (resourceHistoryConf == null) {
- throw new NotFoundException("Resource History Conf '" + key + "'");
- }
-
- binder.update(resourceHistoryConf.getEntity(), resourceHistoryConf.getConf());
- }
-
- @PreAuthorize("hasRole('" + StandardEntitlement.RESOURCE_HISTORY_DELETE + "')")
- public void delete(final String key) {
- ExternalResourceHistoryConf resourceHistoryConf = resourceHistoryConfDAO.find(key);
- if (resourceHistoryConf == null) {
- throw new NotFoundException("Resource History Conf '" + key + "'");
- }
-
- resourceHistoryConfDAO.delete(key);
- }
-
- @Override
- protected ResourceHistoryConfTO resolveReference(final Method method, final Object... args)
- throws UnresolvedReferenceException {
-
- if (!"list".equals(method.getName())) {
- try {
- String key = (String) args[0];
- return binder.getResourceHistoryConfTO(resourceHistoryConfDAO.find(key));
- } catch (Throwable ignore) {
- LOG.debug("Unresolved reference", ignore);
- throw new UnresolvedReferenceException(ignore);
- }
- }
-
- throw new UnresolvedReferenceException();
- }
-
-}
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceHistoryConfDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceHistoryConfDAO.java
deleted file mode 100644
index 1caad69..0000000
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConnInstanceHistoryConfDAO.java
+++ /dev/null
@@ -1,36 +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.persistence.api.dao;
-
-import java.util.List;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
-
-public interface ConnInstanceHistoryConfDAO extends DAO<ConnInstanceHistoryConf> {
-
- ConnInstanceHistoryConf find(String key);
-
- List<ConnInstanceHistoryConf> findByEntity(ConnInstance entity);
-
- ConnInstanceHistoryConf save(ConnInstanceHistoryConf conf);
-
- void delete(String key);
-
- void deleteByEntity(ConnInstance entity);
-}
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceHistoryConfDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceHistoryConfDAO.java
deleted file mode 100644
index 1c4db5a..0000000
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceHistoryConfDAO.java
+++ /dev/null
@@ -1,36 +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.persistence.api.dao;
-
-import java.util.List;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
-
-public interface ExternalResourceHistoryConfDAO extends DAO<ExternalResourceHistoryConf> {
-
- ExternalResourceHistoryConf find(String key);
-
- List<ExternalResourceHistoryConf> findByEntity(ExternalResource entity);
-
- ExternalResourceHistoryConf save(ExternalResourceHistoryConf conf);
-
- void delete(String key);
-
- void deleteByEntity(ExternalResource entity);
-}
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstanceHistoryConf.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstanceHistoryConf.java
deleted file mode 100644
index 88a4481..0000000
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/ConnInstanceHistoryConf.java
+++ /dev/null
@@ -1,24 +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.persistence.api.entity;
-
-import org.apache.syncope.common.lib.to.ConnInstanceTO;
-
-public interface ConnInstanceHistoryConf extends HistoryConf<ConnInstance, ConnInstanceTO> {
-}
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/HistoryConf.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/HistoryConf.java
deleted file mode 100644
index 5da50c1..0000000
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/HistoryConf.java
+++ /dev/null
@@ -1,41 +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.persistence.api.entity;
-
-import java.util.Date;
-import org.apache.syncope.common.lib.to.EntityTO;
-
-public interface HistoryConf<E extends Entity, T extends EntityTO> extends Entity {
-
- String getCreator();
-
- void setCreator(String creator);
-
- Date getCreation();
-
- void setCreation(Date creation);
-
- E getEntity();
-
- void setEntity(E entity);
-
- T getConf();
-
- void setConf(T conf);
-}
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResourceHistoryConf.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResourceHistoryConf.java
deleted file mode 100644
index 0fd8a25..0000000
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResourceHistoryConf.java
+++ /dev/null
@@ -1,25 +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.persistence.api.entity.resource;
-
-import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.core.persistence.api.entity.HistoryConf;
-
-public interface ExternalResourceHistoryConf extends HistoryConf<ExternalResource, ResourceTO> {
-}
diff --git a/core/persistence-jpa-json/src/main/resources/domains/MasterContent.xml b/core/persistence-jpa-json/src/main/resources/domains/MasterContent.xml
index 814b3c6..29918c0 100644
--- a/core/persistence-jpa-json/src/main/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa-json/src/main/resources/domains/MasterContent.xml
@@ -77,17 +77,8 @@ under the License.
<PlainSchema id="jwt.lifetime.minutes" type="Long"
mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <!-- Connector and Resource configuration history -->
- <SyncopeSchema id="connector.conf.history.size"/>
- <PlainSchema id="connector.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
- <SyncopeSchema id="resource.conf.history.size"/>
- <PlainSchema id="resource.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
<SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"
- plainAttrs="[{"values":[{"stringValue":"SSHA256"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":""}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{"values&q [...]
+ plainAttrs="[{"values":[{"stringValue":"SSHA256"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":""}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{"values&q [...]
<AnyType id="USER" kind="USER"/>
<AnyTypeClass id="BaseUser"/>
diff --git a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
index 1020ecc..8b25834 100644
--- a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
@@ -75,17 +75,8 @@ under the License.
<PlainSchema id="jwt.lifetime.minutes" type="Long"
mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <!-- Connector and Resource configuration history -->
- <SyncopeSchema id="connector.conf.history.size"/>
- <PlainSchema id="connector.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
- <SyncopeSchema id="resource.conf.history.size"/>
- <PlainSchema id="resource.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
<SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"
- plainAttrs="[{"values":[{"stringValue":"SHA1"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":"0/20 * * * * ?"}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{&qu [...]
+ plainAttrs="[{"values":[{"stringValue":"SHA1"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":"0/20 * * * * ?"}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{&qu [...]
<!-- sample policies -->
<PasswordPolicy id="ce93fcda-dc3a-4369-a7b0-a6108c261c85" description="a password policy"
@@ -2408,20 +2399,23 @@ $$ }
<SecurityQuestion id="887028ea-66fc-41e7-b397-620d7ea6dfbb" content="What's your mother's maiden name?"/>
- <SyncopeLogger logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ConnectorLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ConnectorLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ResourceLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ResourceLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[SUCCESS]" logLevel="DEBUG"/>
@@ -2431,12 +2425,8 @@ $$ }
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[own]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provisionMembers]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unassign]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unlink]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java
index 049fea3..563a684 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java
@@ -25,7 +25,6 @@ import java.util.stream.Collectors;
import javax.persistence.TypedQuery;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceHistoryConfDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.entity.Entity;
@@ -42,9 +41,6 @@ import org.springframework.transaction.annotation.Transactional;
public class JPAConnInstanceDAO extends AbstractDAO<ConnInstance> implements ConnInstanceDAO {
@Autowired
- private ConnInstanceHistoryConfDAO connInstanceHistoryConfDAO;
-
- @Autowired
private ExternalResourceDAO resourceDAO;
@Autowired
@@ -119,8 +115,6 @@ public class JPAConnInstanceDAO extends AbstractDAO<ConnInstance> implements Con
map(Entity::getKey).collect(Collectors.toList()).
forEach(resource -> resourceDAO.delete(resource));
- connInstanceHistoryConfDAO.deleteByEntity(connInstance);
-
entityManager().remove(connInstance);
connRegistry.unregisterConnector(key);
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceHistoryConfDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceHistoryConfDAO.java
deleted file mode 100644
index 001d7fb..0000000
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceHistoryConfDAO.java
+++ /dev/null
@@ -1,71 +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.persistence.jpa.dao;
-
-import java.util.List;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceHistoryConfDAO;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
-import org.apache.syncope.core.persistence.jpa.entity.JPAConnInstanceHistoryConf;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public class JPAConnInstanceHistoryConfDAO
- extends AbstractDAO<ConnInstanceHistoryConf> implements ConnInstanceHistoryConfDAO {
-
- @Override
- public ConnInstanceHistoryConf find(final String key) {
- return entityManager().find(JPAConnInstanceHistoryConf.class, key);
- }
-
- @Override
- public List<ConnInstanceHistoryConf> findByEntity(final ConnInstance entity) {
- TypedQuery<ConnInstanceHistoryConf> query = entityManager().createQuery(
- "SELECT e FROM " + JPAConnInstanceHistoryConf.class.getSimpleName()
- + " e WHERE e.entity=:entity ORDER BY e.creation DESC", ConnInstanceHistoryConf.class);
- query.setParameter("entity", entity);
- return query.getResultList();
- }
-
- @Override
- public ConnInstanceHistoryConf save(final ConnInstanceHistoryConf conf) {
- return entityManager().merge(conf);
- }
-
- @Override
- public void delete(final String key) {
- ConnInstanceHistoryConf conf = find(key);
- if (conf == null) {
- return;
- }
-
- entityManager().remove(conf);
- }
-
- @Override
- public void deleteByEntity(final ConnInstance entity) {
- Query query = entityManager().createQuery(
- "DELETE FROM " + JPAConnInstanceHistoryConf.class.getSimpleName() + " e WHERE e.entity=:entity");
- query.setParameter("entity", entity);
- query.executeUpdate();
- }
-
-}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
index a331512..4990ee0 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
@@ -29,7 +29,6 @@ import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.syncope.common.lib.types.TaskType;
import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceHistoryConfDAO;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
@@ -86,9 +85,6 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem
@Autowired
private RealmDAO realmDAO;
- @Autowired
- private ExternalResourceHistoryConfDAO externalResourceHistoryConfDAO;
-
@Override
public int count() {
Query query = entityManager().createQuery(
@@ -267,8 +263,6 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem
forEach(provision -> virSchemaDAO.findByProvision(provision).
forEach(schema -> virSchemaDAO.delete(schema.getKey())));
- externalResourceHistoryConfDAO.deleteByEntity(resource);
-
if (resource.getConnector() != null && resource.getConnector().getResources() != null
&& !resource.getConnector().getResources().isEmpty()) {
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceHistoryConfDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceHistoryConfDAO.java
deleted file mode 100644
index ba43355..0000000
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceHistoryConfDAO.java
+++ /dev/null
@@ -1,71 +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.persistence.jpa.dao;
-
-import java.util.List;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceHistoryConfDAO;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
-import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResourceHistoryConf;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public class JPAExternalResourceHistoryConfDAO
- extends AbstractDAO<ExternalResourceHistoryConf> implements ExternalResourceHistoryConfDAO {
-
- @Override
- public ExternalResourceHistoryConf find(final String key) {
- return entityManager().find(JPAExternalResourceHistoryConf.class, key);
- }
-
- @Override
- public List<ExternalResourceHistoryConf> findByEntity(final ExternalResource entity) {
- TypedQuery<ExternalResourceHistoryConf> query = entityManager().createQuery(
- "SELECT e FROM " + JPAExternalResourceHistoryConf.class.getSimpleName()
- + " e WHERE e.entity=:entity ORDER BY e.creation DESC", ExternalResourceHistoryConf.class);
- query.setParameter("entity", entity);
- return query.getResultList();
- }
-
- @Override
- public ExternalResourceHistoryConf save(final ExternalResourceHistoryConf conf) {
- return entityManager().merge(conf);
- }
-
- @Override
- public void delete(final String key) {
- ExternalResourceHistoryConf conf = find(key);
- if (conf == null) {
- return;
- }
-
- entityManager().remove(conf);
- }
-
- @Override
- public void deleteByEntity(final ExternalResource entity) {
- Query query = entityManager().createQuery(
- "DELETE FROM " + JPAExternalResourceHistoryConf.class.getSimpleName() + " e WHERE e.entity=:entity");
- query.setParameter("entity", entity);
- query.executeUpdate();
- }
-
-}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractHistoryConf.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractHistoryConf.java
deleted file mode 100644
index 9ee2c65..0000000
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractHistoryConf.java
+++ /dev/null
@@ -1,76 +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.persistence.jpa.entity;
-
-import java.util.Date;
-import javax.persistence.Column;
-import javax.persistence.Lob;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.core.persistence.api.entity.Entity;
-import org.apache.syncope.core.persistence.api.entity.HistoryConf;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-
-@MappedSuperclass
-public abstract class AbstractHistoryConf<E extends Entity, T extends EntityTO>
- extends AbstractGeneratedKeyEntity implements HistoryConf<E, T> {
-
- private static final long serialVersionUID = -7210303753586235180L;
-
- @Column(nullable = false)
- private String creator;
-
- @Temporal(TemporalType.TIMESTAMP)
- private Date creation;
-
- @Lob
- protected String conf;
-
- @Override
- public String getCreator() {
- return creator;
- }
-
- @Override
- public void setCreator(final String creator) {
- this.creator = creator;
- }
-
- @Override
- public Date getCreation() {
- return creation == null
- ? null
- : new Date(creation.getTime());
- }
-
- @Override
- public void setCreation(final Date creation) {
- this.creation = creation == null
- ? null
- : new Date(creation.getTime());
- }
-
- @Override
- public void setConf(final T conf) {
- this.conf = POJOHelper.serialize(conf);
- }
-
-}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAConnInstanceHistoryConf.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAConnInstanceHistoryConf.java
deleted file mode 100644
index 9001676..0000000
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAConnInstanceHistoryConf.java
+++ /dev/null
@@ -1,59 +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.persistence.jpa.entity;
-
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-
-@Entity
-@Table(name = JPAConnInstanceHistoryConf.TABLE)
-public class JPAConnInstanceHistoryConf
- extends AbstractHistoryConf<ConnInstance, ConnInstanceTO> implements ConnInstanceHistoryConf {
-
- private static final long serialVersionUID = -4152915369607435186L;
-
- public static final String TABLE = "ConnInstanceHistoryConf";
-
- @OneToOne
- private JPAConnInstance entity;
-
- @Override
- public ConnInstance getEntity() {
- return entity;
- }
-
- @Override
- public void setEntity(final ConnInstance entity) {
- checkType(entity, JPAConnInstance.class);
- this.entity = (JPAConnInstance) entity;
- }
-
- @Override
- public ConnInstanceTO getConf() {
- return StringUtils.isBlank(conf)
- ? null
- : POJOHelper.deserialize(conf, ConnInstanceTO.class);
- }
-}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
index 28f6f94..d96f6fb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAEntityFactory.java
@@ -35,7 +35,6 @@ import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
import org.apache.syncope.core.persistence.api.entity.Application;
import org.apache.syncope.core.persistence.api.entity.Batch;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
import org.apache.syncope.core.persistence.api.entity.ConnPoolConf;
import org.apache.syncope.core.persistence.api.entity.DerSchema;
import org.apache.syncope.core.persistence.api.entity.Domain;
@@ -134,10 +133,8 @@ import org.apache.syncope.core.persistence.api.entity.Implementation;
import org.apache.syncope.core.persistence.api.entity.Privilege;
import org.apache.syncope.core.persistence.api.entity.Remediation;
import org.apache.syncope.core.persistence.api.entity.SchemaLabel;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
import org.apache.syncope.core.persistence.api.entity.resource.OrgUnitItem;
import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullCorrelationRuleEntity;
-import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResourceHistoryConf;
import org.apache.syncope.core.persistence.jpa.entity.resource.JPAOrgUnitItem;
import org.apache.syncope.core.persistence.api.entity.policy.PullCorrelationRuleEntity;
import org.apache.syncope.core.persistence.api.entity.policy.PushCorrelationRuleEntity;
@@ -222,16 +219,12 @@ public class JPAEntityFactory implements EntityFactory {
result = (E) new JPANotification();
} else if (reference.equals(ExternalResource.class)) {
result = (E) new JPAExternalResource();
- } else if (reference.equals(ExternalResourceHistoryConf.class)) {
- result = (E) new JPAExternalResourceHistoryConf();
} else if (reference.equals(Provision.class)) {
result = (E) new JPAProvision();
} else if (reference.equals(OrgUnit.class)) {
result = (E) new JPAOrgUnit();
} else if (reference.equals(ConnInstance.class)) {
result = (E) new JPAConnInstance();
- } else if (reference.equals(ConnInstanceHistoryConf.class)) {
- result = (E) new JPAConnInstanceHistoryConf();
} else if (reference.equals(SchemaLabel.class)) {
result = (E) new JPASchemaLabel();
} else if (reference.equals(PlainSchema.class)) {
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResourceHistoryConf.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResourceHistoryConf.java
deleted file mode 100644
index 31fa726..0000000
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResourceHistoryConf.java
+++ /dev/null
@@ -1,60 +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.persistence.jpa.entity.resource;
-
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
-import org.apache.syncope.core.persistence.jpa.entity.AbstractHistoryConf;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-
-@Entity
-@Table(name = JPAExternalResourceHistoryConf.TABLE)
-public class JPAExternalResourceHistoryConf
- extends AbstractHistoryConf<ExternalResource, ResourceTO> implements ExternalResourceHistoryConf {
-
- public static final String TABLE = "ExternalResourceHistoryConf";
-
- private static final long serialVersionUID = 4994551965604592529L;
-
- @OneToOne
- private JPAExternalResource entity;
-
- @Override
- public ExternalResource getEntity() {
- return entity;
- }
-
- @Override
- public void setEntity(final ExternalResource entity) {
- checkType(entity, JPAExternalResource.class);
- this.entity = (JPAExternalResource) entity;
- }
-
- @Override
- public ResourceTO getConf() {
- return StringUtils.isBlank(conf)
- ? null
- : POJOHelper.deserialize(conf, ResourceTO.class);
- }
-}
diff --git a/core/persistence-jpa/src/main/resources/domains/MasterContent.xml b/core/persistence-jpa/src/main/resources/domains/MasterContent.xml
index fd66eb6..39aa841 100644
--- a/core/persistence-jpa/src/main/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/main/resources/domains/MasterContent.xml
@@ -135,23 +135,6 @@ under the License.
<CPlainAttrValue id="447e2456-3ff5-41bc-8ff1-cbb0567546cb"
attribute_id="cfec3140-562d-459c-ac6a-e3e10758661d" longValue="120"/>
- <!-- Connector and Resource configuration history -->
- <SyncopeSchema id="connector.conf.history.size"/>
- <PlainSchema id="connector.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CPlainAttr id="ae36c6ab-0f39-40d7-b6e6-3b8394547c9c"
- owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="connector.conf.history.size"/>
- <CPlainAttrValue id="4989ce5d-7b42-4a5c-b725-54286888df10"
- attribute_id="ae36c6ab-0f39-40d7-b6e6-3b8394547c9c" longValue="10"/>
-
- <SyncopeSchema id="resource.conf.history.size"/>
- <PlainSchema id="resource.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CPlainAttr id="ae7ae53a-74cf-48b0-9a57-6d2c94928e60"
- owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="resource.conf.history.size"/>
- <CPlainAttrValue id="059ac3e1-687f-4dd9-a28b-a23f8b436f31"
- attribute_id="ae7ae53a-74cf-48b0-9a57-6d2c94928e60" longValue="10"/>
-
<AnyType id="USER" kind="USER"/>
<AnyTypeClass id="BaseUser"/>
<AnyType_AnyTypeClass anyType_id="USER" anyTypeClass_id="BaseUser"/>
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
index 9a64989..6a639d1 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
@@ -55,7 +55,7 @@ public class PlainSchemaTest extends AbstractTest {
@Test
public void findAll() {
List<PlainSchema> schemas = plainSchemaDAO.findAll();
- assertEquals(42, schemas.size());
+ assertEquals(40, schemas.size());
}
@Test
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceHistoryConfTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceHistoryConfTest.java
deleted file mode 100644
index 1377edd..0000000
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ConnInstanceHistoryConfTest.java
+++ /dev/null
@@ -1,74 +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.persistence.jpa.outer;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.Date;
-import java.util.List;
-import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceHistoryConfDAO;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
-import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional("Master")
-public class ConnInstanceHistoryConfTest extends AbstractTest {
-
- @Autowired
- private ConnInstanceDAO connInstanceDAO;
-
- @Autowired
- private ConnInstanceHistoryConfDAO connInstanceHistoryConfDAO;
-
- @Test
- public void createDelete() {
- ConnInstance ldapConnector = connInstanceDAO.find("74141a3b-0762-4720-a4aa-fc3e374ef3ef");
- assertNotNull(ldapConnector);
-
- ConnInstanceHistoryConf ldapHistory = entityFactory.newEntity(ConnInstanceHistoryConf.class);
- ldapHistory.setCreation(new Date());
- ldapHistory.setCreator("me");
- ldapHistory.setEntity(ldapConnector);
- ldapHistory.setConf(new ConnInstanceTO());
-
- ldapHistory = connInstanceHistoryConfDAO.save(ldapHistory);
- assertNotNull(ldapHistory.getKey());
-
- entityManager().flush();
-
- List<ConnInstanceHistoryConf> history = connInstanceHistoryConfDAO.findByEntity(ldapConnector);
- assertEquals(1, history.size());
- assertEquals(ldapHistory, history.get(0));
-
- connInstanceHistoryConfDAO.delete(ldapHistory.getKey());
-
- entityManager().flush();
-
- assertNull(connInstanceHistoryConfDAO.find(ldapHistory.getKey()));
- assertTrue(connInstanceHistoryConfDAO.findByEntity(ldapConnector).isEmpty());
- }
-}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceHistoryConfTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceHistoryConfTest.java
deleted file mode 100644
index 8689ddd..0000000
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceHistoryConfTest.java
+++ /dev/null
@@ -1,74 +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.persistence.jpa.outer;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.Date;
-import java.util.List;
-import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceHistoryConfDAO;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
-import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional("Master")
-public class ResourceHistoryConfTest extends AbstractTest {
-
- @Autowired
- private ExternalResourceDAO resourceDAO;
-
- @Autowired
- private ExternalResourceHistoryConfDAO resourceHistoryConfDAO;
-
- @Test
- public void createDelete() {
- ExternalResource ldapResource = resourceDAO.find("resource-ldap");
- assertNotNull(ldapResource);
-
- ExternalResourceHistoryConf ldapHistory = entityFactory.newEntity(ExternalResourceHistoryConf.class);
- ldapHistory.setCreation(new Date());
- ldapHistory.setCreator("me");
- ldapHistory.setEntity(ldapResource);
- ldapHistory.setConf(new ResourceTO());
-
- ldapHistory = resourceHistoryConfDAO.save(ldapHistory);
- assertNotNull(ldapHistory.getKey());
-
- entityManager().flush();
-
- List<ExternalResourceHistoryConf> history = resourceHistoryConfDAO.findByEntity(ldapResource);
- assertEquals(1, history.size());
- assertEquals(ldapHistory, history.get(0));
-
- resourceHistoryConfDAO.delete(ldapHistory.getKey());
-
- entityManager().flush();
-
- assertNull(resourceHistoryConfDAO.find(ldapHistory.getKey()));
- assertTrue(resourceHistoryConfDAO.findByEntity(ldapResource).isEmpty());
- }
-}
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index 117baea..fc10517 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -135,23 +135,6 @@ under the License.
<CPlainAttrValue id="447e2456-3ff5-41bc-8ff1-cbb0567546cb"
attribute_id="cfec3140-562d-459c-ac6a-e3e10758661d" longValue="120"/>
- <!-- Connector and Resource configuration history -->
- <SyncopeSchema id="connector.conf.history.size"/>
- <PlainSchema id="connector.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CPlainAttr id="ae36c6ab-0f39-40d7-b6e6-3b8394547c9c"
- owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="connector.conf.history.size"/>
- <CPlainAttrValue id="4989ce5d-7b42-4a5c-b725-54286888df10"
- attribute_id="ae36c6ab-0f39-40d7-b6e6-3b8394547c9c" longValue="10"/>
-
- <SyncopeSchema id="resource.conf.history.size"/>
- <PlainSchema id="resource.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CPlainAttr id="ae7ae53a-74cf-48b0-9a57-6d2c94928e60"
- owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="resource.conf.history.size"/>
- <CPlainAttrValue id="059ac3e1-687f-4dd9-a28b-a23f8b436f31"
- attribute_id="ae7ae53a-74cf-48b0-9a57-6d2c94928e60" longValue="10"/>
-
<!-- sample policies -->
<PasswordPolicy id="ce93fcda-dc3a-4369-a7b0-a6108c261c85" description="a password policy"
historyLength="1" allowNullPassword="1"/>
@@ -2560,20 +2543,23 @@ $$ }
<SecurityQuestion id="887028ea-66fc-41e7-b397-620d7ea6dfbb" content="What's your mother's maiden name?"/>
- <SyncopeLogger logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ConnectorLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ConnectorLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ResourceLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[ResourceLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[SUCCESS]" logLevel="DEBUG"/>
@@ -2583,12 +2569,8 @@ $$ }
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[own]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provisionMembers]:[SUCCESS]" logLevel="DEBUG"/>
- <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unassign]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unlink]:[SUCCESS]" logLevel="DEBUG"/>
<SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
index 9fa892e..b4b7c18 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
@@ -18,11 +18,9 @@
*/
package org.apache.syncope.core.provisioning.api.data;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.types.ConnConfPropSchema;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
import org.identityconnectors.framework.api.ConfigurationProperty;
public interface ConnInstanceDataBinder {
@@ -33,8 +31,5 @@ public interface ConnInstanceDataBinder {
ConnInstanceTO getConnInstanceTO(ConnInstance connInstance);
- ConnInstanceHistoryConfTO getConnInstanceHistoryConfTO(ConnInstanceHistoryConf history);
-
ConnInstance update(ConnInstanceTO connInstanceTO);
-
}
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java
index 84b2254..c63fbf3 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ResourceDataBinder.java
@@ -18,10 +18,8 @@
*/
package org.apache.syncope.core.provisioning.api.data;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
public interface ResourceDataBinder {
@@ -30,6 +28,4 @@ public interface ResourceDataBinder {
ExternalResource create(ResourceTO resourceTO);
ExternalResource update(ExternalResource resource, ResourceTO resourceTO);
-
- ResourceHistoryConfTO getResourceHistoryConfTO(ExternalResourceHistoryConf history);
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
index d08338f..32e24b6 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
@@ -22,12 +22,9 @@ import java.net.URI;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.Date;
-import java.util.List;
import java.util.Optional;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ConnPoolConfTO;
import org.apache.syncope.common.lib.types.ClientExceptionType;
@@ -35,11 +32,9 @@ import org.apache.syncope.common.lib.types.ConnConfPropSchema;
import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.core.persistence.api.dao.ConfDAO;
import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceHistoryConfDAO;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.dao.RealmDAO;
import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.ConnInstanceHistoryConf;
import org.apache.syncope.core.persistence.api.entity.EntityFactory;
import org.apache.syncope.core.persistence.api.entity.Realm;
import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
@@ -48,7 +43,6 @@ import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
import org.identityconnectors.framework.api.ConfigurationProperties;
import org.identityconnectors.framework.api.ConfigurationProperty;
import org.identityconnectors.framework.impl.api.ConfigurationPropertyImpl;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
import org.identityconnectors.framework.api.ConnectorInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -63,9 +57,6 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
private ConnInstanceDAO connInstanceDAO;
@Autowired
- private ConnInstanceHistoryConfDAO connInstanceHistoryConfDAO;
-
- @Autowired
private RealmDAO realmDAO;
@Autowired
@@ -137,28 +128,6 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
throw new NotFoundException("Connector '" + connInstanceTO.getKey() + "'");
}
- ConnInstanceTO current = getConnInstanceTO(connInstance);
- if (!current.equals(connInstanceTO)) {
- // 1. save the current configuration, before update
- ConnInstanceHistoryConf connInstanceHistoryConf = entityFactory.newEntity(ConnInstanceHistoryConf.class);
- connInstanceHistoryConf.setCreator(AuthContextUtils.getUsername());
- connInstanceHistoryConf.setCreation(new Date());
- connInstanceHistoryConf.setEntity(connInstance);
- connInstanceHistoryConf.setConf(current);
- connInstanceHistoryConfDAO.save(connInstanceHistoryConf);
-
- // 2. ensure the maximum history size is not exceeded
- List<ConnInstanceHistoryConf> history = connInstanceHistoryConfDAO.findByEntity(connInstance);
- long maxHistorySize = confDAO.find("connector.conf.history.size", 10L);
- if (maxHistorySize < history.size()) {
- // always remove the last item since history was obtained by a query with ORDER BY creation DESC
- for (int i = 0; i < history.size() - maxHistorySize; i++) {
- connInstanceHistoryConfDAO.delete(history.get(history.size() - 1).getKey());
- }
- }
- }
-
- // 3. actual update
connInstance.getCapabilities().clear();
connInstance.getCapabilities().addAll(connInstanceTO.getCapabilities());
@@ -291,15 +260,4 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
return connInstanceTO;
}
-
- @Override
- public ConnInstanceHistoryConfTO getConnInstanceHistoryConfTO(final ConnInstanceHistoryConf history) {
- ConnInstanceHistoryConfTO historyTO = new ConnInstanceHistoryConfTO();
- historyTO.setKey(history.getKey());
- historyTO.setCreator(history.getCreator());
- historyTO.setCreation(history.getCreation());
- historyTO.setConnInstanceTO(history.getConf());
-
- return historyTO;
- }
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
index a565e78..b045ad7 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
@@ -20,7 +20,6 @@ package org.apache.syncope.core.provisioning.java.data;
import java.text.ParseException;
import java.util.Collections;
-import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -35,7 +34,6 @@ import org.apache.syncope.common.lib.to.ItemTO;
import org.apache.syncope.common.lib.to.MappingTO;
import org.apache.syncope.common.lib.to.OrgUnitTO;
import org.apache.syncope.common.lib.to.ProvisionTO;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.MappingPurpose;
@@ -53,7 +51,6 @@ import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.ConfDAO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceHistoryConfDAO;
import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
@@ -65,7 +62,6 @@ import org.apache.syncope.core.persistence.api.entity.PlainSchema;
import org.apache.syncope.core.persistence.api.entity.VirSchema;
import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResourceHistoryConf;
import org.apache.syncope.core.persistence.api.entity.resource.Item;
import org.apache.syncope.core.persistence.api.entity.resource.OrgUnit;
import org.apache.syncope.core.persistence.api.entity.resource.OrgUnitItem;
@@ -73,7 +69,6 @@ import org.apache.syncope.core.persistence.api.entity.resource.Provision;
import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
import org.apache.syncope.core.provisioning.api.IntAttrName;
import org.apache.syncope.core.provisioning.api.data.ResourceDataBinder;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -101,9 +96,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
private AnyTypeClassDAO anyTypeClassDAO;
@Autowired
- private ExternalResourceHistoryConfDAO resourceHistoryConfDAO;
-
- @Autowired
private ConfDAO confDAO;
@Autowired
@@ -125,30 +117,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
@Override
public ExternalResource update(final ExternalResource resource, final ResourceTO resourceTO) {
- if (resource.getKey() != null) {
- ResourceTO current = getResourceTO(resource);
- if (!current.equals(resourceTO)) {
- // 1. save the current configuration, before update
- ExternalResourceHistoryConf resourceHistoryConf =
- entityFactory.newEntity(ExternalResourceHistoryConf.class);
- resourceHistoryConf.setCreator(AuthContextUtils.getUsername());
- resourceHistoryConf.setCreation(new Date());
- resourceHistoryConf.setEntity(resource);
- resourceHistoryConf.setConf(current);
- resourceHistoryConfDAO.save(resourceHistoryConf);
-
- // 2. ensure the maximum history size is not exceeded
- List<ExternalResourceHistoryConf> history = resourceHistoryConfDAO.findByEntity(resource);
- long maxHistorySize = confDAO.find("resource.conf.history.size", 10L);
- if (maxHistorySize < history.size()) {
- // always remove the last item since history was obtained by a query with ORDER BY creation DESC
- for (int i = 0; i < history.size() - maxHistorySize; i++) {
- resourceHistoryConfDAO.delete(history.get(history.size() - 1).getKey());
- }
- }
- }
- }
-
resource.setKey(resourceTO.getKey());
if (resourceTO.getConnector() != null) {
@@ -718,15 +686,4 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
return resourceTO;
}
-
- @Override
- public ResourceHistoryConfTO getResourceHistoryConfTO(final ExternalResourceHistoryConf history) {
- ResourceHistoryConfTO historyTO = new ResourceHistoryConfTO();
- historyTO.setKey(history.getKey());
- historyTO.setCreator(history.getCreator());
- historyTO.setCreation(history.getCreation());
- historyTO.setResourceTO(history.getConf());
-
- return historyTO;
- }
}
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorHistoryServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorHistoryServiceImpl.java
deleted file mode 100644
index 3424c5e..0000000
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorHistoryServiceImpl.java
+++ /dev/null
@@ -1,49 +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.rest.cxf.service;
-
-import java.util.List;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
-import org.apache.syncope.common.rest.api.service.ConnectorHistoryService;
-import org.apache.syncope.core.logic.ConnectorHistoryLogic;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class ConnectorHistoryServiceImpl extends AbstractServiceImpl implements ConnectorHistoryService {
-
- @Autowired
- private ConnectorHistoryLogic logic;
-
- @Override
- public List<ConnInstanceHistoryConfTO> list(final String connectorKey) {
- return logic.list(connectorKey);
- }
-
- @Override
- public void restore(final String key) {
- logic.restore(key);
- }
-
- @Override
- public void delete(final String key) {
- logic.delete(key);
- }
-
-}
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceHistoryServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceHistoryServiceImpl.java
deleted file mode 100644
index b69b5be..0000000
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceHistoryServiceImpl.java
+++ /dev/null
@@ -1,49 +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.rest.cxf.service;
-
-import java.util.List;
-import org.apache.syncope.common.lib.to.ResourceHistoryConfTO;
-import org.apache.syncope.common.rest.api.service.ResourceHistoryService;
-import org.apache.syncope.core.logic.ResourceHistoryLogic;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class ResourceHistoryServiceImpl extends AbstractServiceImpl implements ResourceHistoryService {
-
- @Autowired
- private ResourceHistoryLogic logic;
-
- @Override
- public List<ResourceHistoryConfTO> list(final String resourceKey) {
- return logic.list(resourceKey);
- }
-
- @Override
- public void restore(final String key) {
- logic.restore(key);
- }
-
- @Override
- public void delete(final String key) {
- logic.delete(key);
- }
-
-}
diff --git a/core/upgrade/src/main/resources/schema.xml b/core/upgrade/src/main/resources/schema.xml
index dcc6ab0..99db049 100644
--- a/core/upgrade/src/main/resources/schema.xml
+++ b/core/upgrade/src/main/resources/schema.xml
@@ -18,1195 +18,1350 @@ specific language governing permissions and limitations
under the License.
-->
<schemas>
- <schema>
- <table name="ADynGroupMembership">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="fiql" type="varchar" size="255"/>
- <column name="GROUP_ID" type="varchar" size="36"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <fk to-table="SyncopeGroup" column="GROUP_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <index name="I_DYNGSHP_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_DYNGSHP_GROUP" column="GROUP_ID"/>
- </table>
- <table name="AMembership">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="anyObject_id" type="varchar" size="36"/>
- <column name="group_id" type="varchar" size="36"/>
- <fk to-table="AnyObject" column="anyObject_id"/>
- <fk to-table="SyncopeGroup" column="group_id"/>
- <index name="I_MMBRSHP_LEFTEND" column="anyObject_id"/>
- <index name="I_MMBRSHP_RIGHTEND" column="group_id"/>
- </table>
- <table name="APlainAttr">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="OWNER_ID" type="varchar" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <column name="MEMBERSHIP_ID" type="varchar" size="36"/>
- <fk to-table="AnyObject" column="OWNER_ID"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <fk to-table="AMembership" column="MEMBERSHIP_ID"/>
- <index name="I_PLINTTR_MEMBERSHIP" column="MEMBERSHIP_ID"/>
- <index name="I_PLINTTR_OWNER" column="OWNER_ID"/>
- <index name="I_PLINTTR_SCHEMA" column="schema_id"/>
- </table>
- <table name="APlainAttrUniqueValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <fk to-table="APlainAttr" column="ATTRIBUTE_ID"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <index name="I_PLNTQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
- <index name="I_PLNTQVL_SCHEMA" column="schema_id"/>
- <unique name="U_PLNTQVL_BOOLEANVALUE">
- <on column="booleanValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_DATEVALUE">
- <on column="dateValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_STRINGVALUE">
- <on column="stringValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_DOUBLEVALUE">
- <on column="doubleValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_LONGVALUE">
- <on column="longValue"/>
- <on column="schema_id"/>
- </unique>
- </table>
- <table name="APlainAttrValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <fk to-table="APlainAttr" column="ATTRIBUTE_ID"/>
- <index name="I_PLNTRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
- </table>
- <table name="ARelationship">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="left_anyObject_id" type="varchar" size="36"/>
- <column name="right_anyObject_id" type="varchar" size="36"/>
- <column name="TYPE_ID" type="varchar" size="255"/>
- <fk to-table="AnyObject" column="left_anyObject_id"/>
- <fk to-table="AnyObject" column="right_anyObject_id"/>
- <fk to-table="RelationshipType" column="TYPE_ID"/>
- <index name="I_RLTNSHP_LEFTEND" column="left_anyObject_id"/>
- <index name="I_RLTNSHP_RIGHTEND" column="right_anyObject_id"/>
- <index name="I_RLTNSHP_TYPE" column="TYPE_ID"/>
- <unique name="U_RLTNSHP_TYPE_ID">
- <on column="TYPE_ID"/>
- <on column="left_anyObject_id"/>
- <on column="right_anyObject_id"/>
- </unique>
- </table>
- <table name="AccessToken">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="authorities" type="blob" size="-1"/>
- <column name="body" type="clob" size="-1"/>
- <column name="expiryTime" type="timestamp"/>
- <column name="owner" type="varchar" size="255"/>
- <unique name="U_CCSSTKN_OWNER" column="owner"/>
- </table>
- <table name="AccountPolicy">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="description" type="varchar" size="255"/>
- <column name="maxAuthenticationAttempts" type="integer"/>
- <column name="propagateSuspension" type="integer"/>
- </table>
- <table name="AccountPolicyRule">
- <column name="policy_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="AccountPolicy" column="policy_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_CCNTYRL_ELEMENT" column="implementation_id"/>
- <index name="I_CCNTYRL_POLICY_ID" column="policy_id"/>
- </table>
- <table name="AccountPolicy_ExternalResource">
- <column name="accountPolicy_id" type="varchar" size="36"/>
- <column name="resource_id" type="varchar" size="255"/>
- <fk to-table="AccountPolicy" column="accountPolicy_id"/>
- <fk to-table="ExternalResource" column="resource_id"/>
- <index name="I_CCNTSRC_ACCOUNTPOLICY_ID" column="accountPolicy_id"/>
- <index name="I_CCNTSRC_ELEMENT" column="resource_id"/>
- </table>
- <table name="AnyAbout">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="filter" type="clob" size="-1"/>
- <column name="NOTIFICATION_ID" type="varchar" size="36"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <fk to-table="Notification" column="NOTIFICATION_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <index name="I_NYABOUT_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_NYABOUT_NOTIFICATION" column="NOTIFICATION_ID"/>
- <unique name="U_NYABOUT_NOTIFICATION_ID">
- <on column="NOTIFICATION_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="AnyObject">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="creationDate" type="timestamp"/>
- <column name="creator" type="varchar" size="255"/>
- <column name="lastChangeDate" type="timestamp"/>
- <column name="lastModifier" type="varchar" size="255"/>
- <column name="status" type="varchar" size="255"/>
- <column name="name" type="varchar" size="255"/>
- <column name="REALM_ID" type="varchar" size="36"/>
- <column name="TYPE_ID" type="varchar" size="255"/>
- <fk to-table="Realm" column="REALM_ID"/>
- <fk to-table="AnyType" column="TYPE_ID"/>
- <index name="I_NYOBJCT_REALM" column="REALM_ID"/>
- <index name="I_NYOBJCT_TYPE" column="TYPE_ID"/>
- <unique name="U_NYOBJCT_NAME" column="name"/>
- </table>
- <table name="AnyObject_AnyTypeClass">
- <column name="anyObject_id" type="varchar" size="36"/>
- <column name="anyTypeClass_id" type="varchar" size="255"/>
- <fk to-table="AnyObject" column="anyObject_id"/>
- <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
- <index name="I_NYBJLSS_ANYOBJECT_ID" column="anyObject_id"/>
- <index name="I_NYBJLSS_ELEMENT" column="anyTypeClass_id"/>
- </table>
- <table name="AnyObject_ExternalResource">
- <column name="anyObject_id" type="varchar" size="36"/>
- <column name="resource_id" type="varchar" size="255"/>
- <fk to-table="AnyObject" column="anyObject_id"/>
- <fk to-table="ExternalResource" column="resource_id"/>
- <index name="I_NYBJSRC_ANYOBJECT_ID" column="anyObject_id"/>
- <index name="I_NYBJSRC_ELEMENT" column="resource_id"/>
- </table>
- <table name="AnyTemplatePullTask">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="template" type="clob" size="-1"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <column name="PULLTASK_ID" type="varchar" size="36"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <fk to-table="Task" column="PULLTASK_ID"/>
- <index name="I_NYTMTSK_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_NYTMTSK_PULLTASK" column="PULLTASK_ID"/>
- <unique name="U_NYTMTSK_PULLTASK_ID">
- <on column="PULLTASK_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="AnyTemplateRealm">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="template" type="clob" size="-1"/>
- <column name="REALM_ID" type="varchar" size="36"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <fk to-table="Realm" column="REALM_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <index name="I_NYTMRLM_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_NYTMRLM_REALM" column="REALM_ID"/>
- <unique name="U_NYTMRLM_REALM_ID">
- <on column="REALM_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="AnyType">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="kind" type="varchar" size="20"/>
- </table>
- <table name="AnyTypeClass">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- </table>
- <table name="AnyType_AnyTypeClass">
- <column name="anyType_id" type="varchar" size="255"/>
- <column name="anyTypeClass_id" type="varchar" size="255"/>
- <fk to-table="AnyType" column="anyType_id"/>
- <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
- <index name="I_NYTYLSS_ANYTYPE_ID" column="anyType_id"/>
- <index name="I_NYTYLSS_ELEMENT" column="anyTypeClass_id"/>
- </table>
- <table name="Application">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="description" type="varchar" size="255"/>
- </table>
- <table name="CPlainAttr">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <column name="OWNER_ID" type="varchar" size="255"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <fk to-table="SyncopeConf" column="OWNER_ID"/>
- <index name="I_CPLNTTR_OWNER" column="OWNER_ID"/>
- <index name="I_CPLNTTR_SCHEMA" column="schema_id"/>
- </table>
- <table name="CPlainAttrUniqueValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <fk to-table="CPlainAttr" column="ATTRIBUTE_ID"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <index name="I_CPLNQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
- <index name="I_CPLNQVL_SCHEMA" column="schema_id"/>
- <unique name="U_CPLNQVL_BOOLEANVALUE">
- <on column="booleanValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_CPLNQVL_DATEVALUE">
- <on column="dateValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_CPLNQVL_STRINGVALUE">
- <on column="stringValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_CPLNQVL_DOUBLEVALUE">
- <on column="doubleValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_CPLNQVL_LONGVALUE">
- <on column="longValue"/>
- <on column="schema_id"/>
- </unique>
- </table>
- <table name="CPlainAttrValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <fk to-table="CPlainAttr" column="ATTRIBUTE_ID"/>
- <index name="I_CPLNRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
- </table>
- <table name="ConnInstance">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="bundleName" type="varchar" size="255"/>
- <column name="connRequestTimeout" type="integer"/>
- <column name="connectorName" type="varchar" size="255"/>
- <column name="displayName" type="varchar" size="255"/>
- <column name="jsonConf" type="clob" size="-1"/>
- <column name="location" type="varchar" size="255"/>
- <column name="version" type="varchar" size="255"/>
- <column name="ADMINREALM_ID" type="varchar" size="36"/>
- <column name="maxIdle" type="integer"/>
- <column name="maxObjects" type="integer"/>
- <column name="maxWait" type="bigint"/>
- <column name="minEvictableIdleTimeMillis" type="bigint"/>
- <column name="minIdle" type="integer"/>
- <fk to-table="Realm" column="ADMINREALM_ID"/>
- <index name="I_CNNNTNC_ADMINREALM" column="ADMINREALM_ID"/>
- <unique name="U_CNNNTNC_DISPLAYNAME" column="displayName"/>
- </table>
- <table name="ConnInstanceHistoryConf">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="conf" type="clob" size="-1"/>
- <column name="creation" type="timestamp"/>
- <column name="creator" type="varchar" not-null="true" size="255"/>
- <column name="ENTITY_ID" type="varchar" size="36"/>
- <fk to-table="ConnInstance" column="ENTITY_ID"/>
- <index name="I_CNNNCNF_ENTITY" column="ENTITY_ID"/>
- </table>
- <table name="ConnInstance_capabilities">
- <column name="connInstance_id" type="varchar" size="36"/>
- <column name="capability" type="varchar" size="20"/>
- <fk to-table="ConnInstance" column="connInstance_id"/>
- <index name="I_CNNNLTS_CONNINSTANCE_ID" column="connInstance_id"/>
- </table>
- <table name="DerSchema">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="expression" type="varchar" size="255"/>
- <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
- <fk to-table="SyncopeSchema" column="id"/>
- <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
- <index name="I_DRSCHEM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
- </table>
- <table name="DynRealm">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- </table>
- <table name="DynRealmMembership">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="fiql" type="varchar" size="255"/>
- <column name="DYNREALM_ID" type="varchar" size="255"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <fk to-table="DynRealm" column="DYNREALM_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <index name="I_DYNRSHP_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_DYNRSHP_DYNREALM" column="DYNREALM_ID"/>
- </table>
- <table name="DynRoleMembership">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="fiql" type="varchar" size="255"/>
- <column name="ROLE_ID" type="varchar" size="255"/>
- <fk to-table="SyncopeRole" column="ROLE_ID"/>
- <index name="I_DYNRSHP_ROLE" column="ROLE_ID"/>
- </table>
- <table name="ExternalResource">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="createTraceLevel" type="varchar" size="20"/>
- <column name="deleteTraceLevel" type="varchar" size="20"/>
- <column name="enforceMandatoryCondition" type="integer"/>
- <column name="jsonConf" type="clob" size="-1"/>
- <column name="overrideCapabilities" type="integer"/>
- <column name="propagationPriority" type="integer"/>
- <column name="provisioningTraceLevel" type="varchar" size="20"/>
- <column name="randomPwdIfNotProvided" type="integer"/>
- <column name="updateTraceLevel" type="varchar" size="20"/>
- <column name="ACCOUNTPOLICY_ID" type="varchar" size="36"/>
- <column name="CONNECTOR_ID" type="varchar" size="36"/>
- <column name="PASSWORDPOLICY_ID" type="varchar" size="36"/>
- <column name="PULLPOLICY_ID" type="varchar" size="36"/>
- <column name="PUSHPOLICY_ID" type="varchar" size="36"/>
- <fk to-table="AccountPolicy" column="ACCOUNTPOLICY_ID"/>
- <fk to-table="ConnInstance" column="CONNECTOR_ID"/>
- <fk to-table="PasswordPolicy" column="PASSWORDPOLICY_ID"/>
- <fk to-table="PullPolicy" column="PULLPOLICY_ID"/>
- <fk to-table="PushPolicy" column="PUSHPOLICY_ID"/>
- <index name="I_XTRNSRC_ACCOUNTPOLICY" column="ACCOUNTPOLICY_ID"/>
- <index name="I_XTRNSRC_CONNECTOR" column="CONNECTOR_ID"/>
- <index name="I_XTRNSRC_PASSWORDPOLICY" column="PASSWORDPOLICY_ID"/>
- <index name="I_XTRNSRC_PULLPOLICY" column="PULLPOLICY_ID"/>
- <index name="I_XTRNSRC_PUSHPOLICY" column="PUSHPOLICY_ID"/>
- </table>
- <table name="ExternalResourceHistoryConf">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="conf" type="clob" size="-1"/>
- <column name="creation" type="timestamp"/>
- <column name="creator" type="varchar" not-null="true" size="255"/>
- <column name="ENTITY_ID" type="varchar" size="255"/>
- <fk to-table="ExternalResource" column="ENTITY_ID"/>
- <index name="I_XTRNCNF_ENTITY" column="ENTITY_ID"/>
- </table>
- <table name="ExternalResourcePropAction">
- <column name="resource_id" type="varchar" size="255"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="ExternalResource" column="resource_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_XTRNCTN_ELEMENT" column="implementation_id"/>
- <index name="I_XTRNCTN_RESOURCE_ID" column="resource_id"/>
- </table>
- <table name="ExternalResource_capOverride">
- <column name="resource_id" type="varchar" size="255"/>
- <column name="capabilityOverride" type="varchar" size="20"/>
- <fk to-table="ExternalResource" column="resource_id"/>
- <index name="I_XTRNRRD_RESOURCE_ID" column="resource_id"/>
- </table>
- <table name="GPlainAttr">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="OWNER_ID" type="varchar" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <fk to-table="SyncopeGroup" column="OWNER_ID"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <index name="I_GPLNTTR_OWNER" column="OWNER_ID"/>
- <index name="I_GPLNTTR_SCHEMA" column="schema_id"/>
- </table>
- <table name="GPlainAttrUniqueValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <fk to-table="GPlainAttr" column="ATTRIBUTE_ID"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <index name="I_GPLNQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
- <index name="I_GPLNQVL_SCHEMA" column="schema_id"/>
- <unique name="U_GPLNQVL_BOOLEANVALUE">
- <on column="booleanValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_GPLNQVL_DATEVALUE">
- <on column="dateValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_GPLNQVL_STRINGVALUE">
- <on column="stringValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_GPLNQVL_DOUBLEVALUE">
- <on column="doubleValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_GPLNQVL_LONGVALUE">
- <on column="longValue"/>
- <on column="schema_id"/>
- </unique>
- </table>
- <table name="GPlainAttrValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <fk to-table="GPlainAttr" column="ATTRIBUTE_ID"/>
- <index name="I_GPLNRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
- </table>
- <table name="Implementation">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="body" type="clob" size="-1"/>
- <column name="engine" type="varchar" not-null="true" size="20"/>
- <column name="type" type="varchar" not-null="true" size="21"/>
- </table>
- <table name="MailTemplate">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="htmlTemplate" type="clob" size="-1"/>
- <column name="textTemplate" type="clob" size="-1"/>
- </table>
- <table name="Mapping">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="connObjectLink" type="varchar" size="255"/>
- <column name="PROVISION_ID" type="varchar" size="36"/>
- <fk to-table="Provision" column="PROVISION_ID"/>
- <index name="I_MAPPING_PROVISION" column="PROVISION_ID"/>
- </table>
- <table name="MappingItem">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="connObjectKey" type="integer"/>
- <column name="extAttrName" type="varchar" size="255"/>
- <column name="intAttrName" type="varchar" size="255"/>
- <column name="mandatoryCondition" type="varchar" size="255"/>
- <column name="password" type="integer"/>
- <column name="propJEXL" type="varchar" size="255"/>
- <column name="pullJEXL" type="varchar" size="255"/>
- <column name="purpose" type="varchar" size="20"/>
- <column name="MAPPING_ID" type="varchar" size="36"/>
- <fk to-table="Mapping" column="MAPPING_ID"/>
- <index name="I_MPPNGTM_MAPPING" column="MAPPING_ID"/>
- </table>
- <table name="MappingItemTransformer">
- <column name="item_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="MappingItem" column="item_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_MPPNRMR_ELEMENT" column="implementation_id"/>
- <index name="I_MPPNRMR_ITEM_ID" column="item_id"/>
- </table>
- <table name="Notification">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="active" type="integer"/>
- <column name="recipientAttrName" type="varchar" size="255"/>
- <column name="recipientsFIQL" type="varchar" size="255"/>
- <column name="selfAsRecipient" type="integer"/>
- <column name="sender" type="varchar" size="255"/>
- <column name="subject" type="varchar" size="255"/>
- <column name="traceLevel" type="varchar" size="20"/>
- <column name="RECIPIENTSPROVIDER_ID" type="varchar" size="255"/>
- <column name="template_id" type="varchar" size="255"/>
- <fk to-table="Implementation" column="RECIPIENTSPROVIDER_ID"/>
- <fk to-table="MailTemplate" column="template_id"/>
- <index name="I_NTFCTON_RECIPIENTSPROVIDER" column="RECIPIENTSPROVIDER_ID"/>
- <index name="I_NTFCTON_TEMPLATE" column="template_id"/>
- </table>
- <table name="NotificationTask_recipients">
- <column name="notificationTask_id" type="varchar" size="36"/>
- <column name="address" type="varchar" size="255"/>
- <fk to-table="Task" column="notificationTask_id"/>
- <index name="I_NTFCNTS_NOTIFICATIONTASK_ID" column="notificationTask_id"/>
- </table>
- <table name="Notification_events">
- <column name="notification_id" type="varchar" size="36"/>
- <column name="event" type="varchar" size="255"/>
- <fk to-table="Notification" column="notification_id"/>
- <index name="I_NTFCNTS_NOTIFICATION_ID" column="notification_id"/>
- </table>
- <table name="Notification_staticRecipients">
- <column name="notification_id" type="varchar" size="36"/>
- <column name="staticRecipients" type="varchar" size="255"/>
- <fk to-table="Notification" column="notification_id"/>
- <index name="I_NTFCNTS_NOTIFICATION_ID1" column="notification_id"/>
- </table>
- <table name="OrgUnit">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="connObjectLink" type="varchar" size="255"/>
- <column name="ignoreCaseMatch" type="integer"/>
- <column name="objectClass" type="varchar" size="255"/>
- <column name="serializedSyncToken" type="clob" size="-1"/>
- <column name="RESOURCE_ID" type="varchar" size="255"/>
- <fk to-table="ExternalResource" column="RESOURCE_ID"/>
- <index name="I_ORGUNIT_RESOURCE" column="RESOURCE_ID"/>
- </table>
- <table name="OrgUnitItem">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="connObjectKey" type="integer"/>
- <column name="extAttrName" type="varchar" size="255"/>
- <column name="intAttrName" type="varchar" size="255"/>
- <column name="mandatoryCondition" type="varchar" size="255"/>
- <column name="password" type="integer"/>
- <column name="propJEXL" type="varchar" size="255"/>
- <column name="pullJEXL" type="varchar" size="255"/>
- <column name="purpose" type="varchar" size="20"/>
- <column name="ORGUNIT_ID" type="varchar" size="36"/>
- <fk to-table="OrgUnit" column="ORGUNIT_ID"/>
- <index name="I_RGUNTTM_ORGUNIT" column="ORGUNIT_ID"/>
- </table>
- <table name="OrgUnitItemTransformer">
- <column name="item_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="OrgUnitItem" column="item_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_RGNTRMR_ELEMENT" column="implementation_id"/>
- <index name="I_RGNTRMR_ITEM_ID" column="item_id"/>
- </table>
- <table name="PasswordPolicy">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="description" type="varchar" size="255"/>
- <column name="allowNullPassword" type="integer"/>
- <column name="historyLength" type="integer"/>
- </table>
- <table name="PasswordPolicyRule">
- <column name="policy_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="PasswordPolicy" column="policy_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_PSSWYRL_ELEMENT" column="implementation_id"/>
- <index name="I_PSSWYRL_POLICY_ID" column="policy_id"/>
- </table>
- <table name="PlainSchema">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="cipherAlgorithm" type="varchar" size="20"/>
- <column name="conversionPattern" type="varchar" size="255"/>
- <column name="enumerationKeys" type="clob" size="-1"/>
- <column name="enumerationValues" type="clob" size="-1"/>
- <column name="mandatoryCondition" type="varchar" size="255"/>
- <column name="mimeType" type="varchar" size="255"/>
- <column name="multivalue" type="integer"/>
- <column name="readonly" type="integer"/>
- <column name="secretKey" type="varchar" size="255"/>
- <column name="type" type="varchar" size="20"/>
- <column name="uniqueConstraint" type="integer"/>
- <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
- <column name="VALIDATOR_ID" type="varchar" size="255"/>
- <fk to-table="SyncopeSchema" column="id"/>
- <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
- <fk to-table="Implementation" column="VALIDATOR_ID"/>
- <index name="I_PLNSCHM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
- <index name="I_PLNSCHM_VALIDATOR" column="VALIDATOR_ID"/>
- </table>
- <table name="Privilege">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="description" type="varchar" size="255"/>
- <column name="spec" type="clob" size="-1"/>
- <column name="APPLICATION_ID" type="varchar" size="255"/>
- <fk to-table="Application" column="APPLICATION_ID"/>
- <index name="I_PRIVILG_APPLICATION" column="APPLICATION_ID"/>
- </table>
- <table name="Provision">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="ignoreCaseMatch" type="integer"/>
- <column name="objectClass" type="varchar" size="255"/>
- <column name="serializedSyncToken" type="clob" size="-1"/>
- <column name="RESOURCE_ID" type="varchar" size="255"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <column name="UIDONCREATE_ID" type="varchar" size="255"/>
- <fk to-table="ExternalResource" column="RESOURCE_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <fk to-table="PlainSchema" column="UIDONCREATE_ID"/>
- <index name="I_PROVSON_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_PROVSON_RESOURCE" column="RESOURCE_ID"/>
- <index name="I_PROVSON_UIDONCREATE" column="UIDONCREATE_ID"/>
- <unique name="U_PROVSON_RESOURCE_ID">
- <on column="RESOURCE_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="Provision_AnyTypeClass">
- <column name="provision_id" type="varchar" size="36"/>
- <column name="anyTypeClass_id" type="varchar" size="255"/>
- <fk to-table="Provision" column="provision_id"/>
- <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
- <index name="I_PRVSLSS_ELEMENT" column="anyTypeClass_id"/>
- <index name="I_PRVSLSS_PROVISION_ID" column="provision_id"/>
- </table>
- <table name="PullCorrelationRuleEntity">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="PULLPOLICY_ID" type="varchar" size="36"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <column name="IMPLEMENTATION_ID" type="varchar" size="255"/>
- <fk to-table="PullPolicy" column="PULLPOLICY_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <fk to-table="Implementation" column="IMPLEMENTATION_ID"/>
- <index name="I_PLLCTTY_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_PLLCTTY_IMPLEMENTATION" column="IMPLEMENTATION_ID"/>
- <index name="I_PLLCTTY_PULLPOLICY" column="PULLPOLICY_ID"/>
- <unique name="U_PLLCTTY_PULLPOLICY_ID">
- <on column="PULLPOLICY_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="PullPolicy">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="description" type="varchar" size="255"/>
- <column name="conflictResolutionAction" type="varchar" size="20"/>
- </table>
- <table name="PullTaskAction">
- <column name="task_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="Task" column="task_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_PLLTCTN_ELEMENT" column="implementation_id"/>
- <index name="I_PLLTCTN_TASK_ID" column="task_id"/>
- </table>
- <table name="PushCorrelationRuleEntity">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="PUSHPOLICY_ID" type="varchar" size="36"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <column name="IMPLEMENTATION_ID" type="varchar" size="255"/>
- <fk to-table="PushPolicy" column="PUSHPOLICY_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <fk to-table="Implementation" column="IMPLEMENTATION_ID"/>
- <index name="I_PSHCTTY_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_PSHCTTY_IMPLEMENTATION" column="IMPLEMENTATION_ID"/>
- <index name="I_PSHCTTY_PUSHPOLICY" column="PUSHPOLICY_ID"/>
- <unique name="U_PSHCTTY_PUSHPOLICY_ID">
- <on column="PUSHPOLICY_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="PushPolicy">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="description" type="varchar" size="255"/>
- <column name="conflictResolutionAction" type="varchar" size="20"/>
- </table>
- <table name="PushTaskAction">
- <column name="task_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="Task" column="task_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_PSHTCTN_ELEMENT" column="implementation_id"/>
- <index name="I_PSHTCTN_TASK_ID" column="task_id"/>
- </table>
- <table name="PushTaskAnyFilter">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="fiql" type="varchar" size="255"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <column name="PUSHTASK_ID" type="varchar" size="36"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <fk to-table="Task" column="PUSHTASK_ID"/>
- <index name="I_PSHTLTR_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_PSHTLTR_PUSHTASK" column="PUSHTASK_ID"/>
- <unique name="U_PSHTLTR_PUSHTASK_ID">
- <on column="PUSHTASK_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="Realm">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="name" type="varchar" size="255"/>
- <column name="ACCOUNTPOLICY_ID" type="varchar" size="36"/>
- <column name="PARENT_ID" type="varchar" size="36"/>
- <column name="PASSWORDPOLICY_ID" type="varchar" size="36"/>
- <fk to-table="AccountPolicy" column="ACCOUNTPOLICY_ID"/>
- <fk to-table="Realm" column="PARENT_ID"/>
- <fk to-table="PasswordPolicy" column="PASSWORDPOLICY_ID"/>
- <index name="I_REALM_ACCOUNTPOLICY" column="ACCOUNTPOLICY_ID"/>
- <index name="I_REALM_PARENT" column="PARENT_ID"/>
- <index name="I_REALM_PASSWORDPOLICY" column="PASSWORDPOLICY_ID"/>
- <unique name="U_REALM_NAME">
- <on column="name"/>
- <on column="PARENT_ID"/>
- </unique>
- </table>
- <table name="RealmAction">
- <column name="realm_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="Realm" column="realm_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_RLMCTON_ELEMENT" column="implementation_id"/>
- <index name="I_RLMCTON_REALM_ID" column="realm_id"/>
- </table>
- <table name="Realm_ExternalResource">
- <column name="realm_id" type="varchar" size="36"/>
- <column name="resource_id" type="varchar" size="255"/>
- <fk to-table="Realm" column="realm_id"/>
- <fk to-table="ExternalResource" column="resource_id"/>
- <index name="I_RLM_SRC_ELEMENT" column="resource_id"/>
- <index name="I_RLM_SRC_REALM_ID" column="realm_id"/>
- </table>
- <table name="RelationshipType">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="description" type="varchar" size="255"/>
- </table>
- <table name="Remediation">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="error" type="clob" size="-1"/>
- <column name="instant" type="timestamp"/>
- <column name="operation" type="varchar" size="20"/>
- <column name="payload" type="clob" size="-1"/>
- <column name="remoteName" type="varchar" size="255"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <column name="PULLTASK_ID" type="varchar" size="36"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <fk to-table="Task" column="PULLTASK_ID"/>
- <index name="I_RMDTION_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_RMDTION_PULLTASK" column="PULLTASK_ID"/>
- </table>
- <table name="Report">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="active" type="integer"/>
- <column name="cronExpression" type="varchar" size="255"/>
- <column name="name" type="varchar" not-null="true" size="255"/>
- <column name="template_id" type="varchar" size="255"/>
- <fk to-table="ReportTemplate" column="template_id"/>
- <index name="I_REPORT_TEMPLATE" column="template_id"/>
- <unique name="U_REPORT_NAME" column="name"/>
- </table>
- <table name="ReportExec">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="endDate" type="timestamp"/>
- <column name="message" type="clob" size="-1"/>
- <column name="startDate" type="timestamp"/>
- <column name="status" type="varchar" size="255"/>
- <column name="execResult" type="blob" size="-1"/>
- <column name="REPORT_ID" type="varchar" size="36"/>
- <fk to-table="Report" column="REPORT_ID"/>
- <index name="I_RPORTXC_REPORT" column="REPORT_ID"/>
- </table>
- <table name="ReportReportlet">
- <column name="report_id" type="varchar" size="36"/>
- <column name="implementation_id" type="varchar" size="255"/>
- <fk to-table="Report" column="report_id"/>
- <fk to-table="Implementation" column="implementation_id"/>
- <index name="I_RPRTTLT_ELEMENT" column="implementation_id"/>
- <index name="I_RPRTTLT_REPORT_ID" column="report_id"/>
- </table>
- <table name="ReportTemplate">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="csvTemplate" type="clob" size="-1"/>
- <column name="foTemplate" type="clob" size="-1"/>
- <column name="htmlTemplate" type="clob" size="-1"/>
- </table>
- <table name="SchemaLabel">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="display" type="varchar" not-null="true" size="255"/>
- <column name="locale" type="varchar" not-null="true" size="255"/>
- <column name="SCHEMA_ID" type="varchar" size="255"/>
- <fk to-table="SyncopeSchema" column="SCHEMA_ID"/>
- <index name="I_SCHMLBL_SCHEMA" column="SCHEMA_ID"/>
- <unique name="U_SCHMLBL_SCHEMA_ID">
- <on column="SCHEMA_ID"/>
- <on column="locale"/>
- </unique>
- </table>
- <table name="SecurityQuestion">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="content" type="varchar" size="255"/>
- <unique name="U_SCRTSTN_CONTENT" column="content"/>
- </table>
- <table name="SyncopeConf">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- </table>
- <table name="SyncopeDomain">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="adminCipherAlgorithm" type="varchar" size="20"/>
- <column name="adminPwd" type="varchar" size="255"/>
- </table>
- <table name="SyncopeGroup">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="creationDate" type="timestamp"/>
- <column name="creator" type="varchar" size="255"/>
- <column name="lastChangeDate" type="timestamp"/>
- <column name="lastModifier" type="varchar" size="255"/>
- <column name="status" type="varchar" size="255"/>
- <column name="name" type="varchar" size="255"/>
- <column name="REALM_ID" type="varchar" size="36"/>
- <column name="GROUPOWNER_ID" type="varchar" size="36"/>
- <column name="USEROWNER_ID" type="varchar" size="36"/>
- <fk to-table="Realm" column="REALM_ID"/>
- <fk to-table="SyncopeGroup" column="GROUPOWNER_ID"/>
- <fk to-table="SyncopeUser" column="USEROWNER_ID"/>
- <index name="I_SYNCGRP_GROUPOWNER" column="GROUPOWNER_ID"/>
- <index name="I_SYNCGRP_REALM" column="REALM_ID"/>
- <index name="I_SYNCGRP_USEROWNER" column="USEROWNER_ID"/>
- <unique name="U_SYNCGRP_NAME" column="name"/>
- </table>
- <table name="SyncopeGroup_AnyTypeClass">
- <column name="group_id" type="varchar" size="36"/>
- <column name="anyTypeClass_id" type="varchar" size="255"/>
- <fk to-table="SyncopeGroup" column="group_id"/>
- <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
- <index name="I_SYNCLSS_ELEMENT" column="anyTypeClass_id"/>
- <index name="I_SYNCLSS_GROUP_ID" column="group_id"/>
- </table>
- <table name="SyncopeGroup_ExternalResource">
- <column name="group_id" type="varchar" size="36"/>
- <column name="resource_id" type="varchar" size="255"/>
- <fk to-table="SyncopeGroup" column="group_id"/>
- <fk to-table="ExternalResource" column="resource_id"/>
- <index name="I_SYNCSRC_ELEMENT" column="resource_id"/>
- <index name="I_SYNCSRC_GROUP_ID" column="group_id"/>
- </table>
- <table name="SyncopeLogger">
- <pk column="logName"/>
- <column name="logName" type="varchar" not-null="true" size="255"/>
- <column name="logLevel" type="varchar" not-null="true" size="20"/>
- <column name="logType" type="varchar" not-null="true" size="20"/>
- </table>
- <table name="SyncopeRole">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="anyLayout" type="clob" size="-1"/>
- </table>
- <table name="SyncopeRole_DynRealm">
- <column name="role_id" type="varchar" size="255"/>
- <column name="dynamicRealm_id" type="varchar" size="255"/>
- <fk to-table="SyncopeRole" column="role_id"/>
- <fk to-table="DynRealm" column="dynamicRealm_id"/>
- <index name="I_SYNCRLM_ELEMENT" column="dynamicRealm_id"/>
- <index name="I_SYNCRLM_ROLE_ID" column="role_id"/>
- </table>
- <table name="SyncopeRole_Privilege">
- <column name="role_id" type="varchar" size="255"/>
- <column name="privilege_id" type="varchar" size="255"/>
- <fk to-table="SyncopeRole" column="role_id"/>
- <fk to-table="Privilege" column="privilege_id"/>
- <index name="I_SYNCVLG_ELEMENT" column="privilege_id"/>
- <index name="I_SYNCVLG_ROLE_ID" column="role_id"/>
- </table>
- <table name="SyncopeRole_Realm">
- <column name="role_id" type="varchar" size="255"/>
- <column name="realm_id" type="varchar" size="36"/>
- <fk to-table="SyncopeRole" column="role_id"/>
- <fk to-table="Realm" column="realm_id"/>
- <index name="I_SYNCRLM_ELEMENT1" column="realm_id"/>
- <index name="I_SYNCRLM_ROLE_ID1" column="role_id"/>
- </table>
- <table name="SyncopeRole_entitlements">
- <column name="role_id" type="varchar" size="255"/>
- <column name="entitlement" type="varchar" size="255"/>
- <fk to-table="SyncopeRole" column="role_id"/>
- <index name="I_SYNCNTS_ROLE_ID" column="role_id"/>
- </table>
- <table name="SyncopeSchema">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- </table>
- <table name="SyncopeUser">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="creationDate" type="timestamp"/>
- <column name="creator" type="varchar" size="255"/>
- <column name="lastChangeDate" type="timestamp"/>
- <column name="lastModifier" type="varchar" size="255"/>
- <column name="status" type="varchar" size="255"/>
- <column name="changePwdDate" type="timestamp"/>
- <column name="cipherAlgorithm" type="varchar" size="20"/>
- <column name="failedLogins" type="integer"/>
- <column name="lastLoginDate" type="timestamp"/>
- <column name="mustChangePassword" type="integer"/>
- <column name="password" type="varchar" size="255"/>
- <column name="securityAnswer" type="varchar" size="255"/>
- <column name="suspended" type="integer"/>
- <column name="token" type="clob" size="-1"/>
- <column name="tokenExpireTime" type="timestamp"/>
- <column name="username" type="varchar" size="255"/>
- <column name="REALM_ID" type="varchar" size="36"/>
- <column name="SECURITYQUESTION_ID" type="varchar" size="36"/>
- <fk to-table="Realm" column="REALM_ID"/>
- <fk to-table="SecurityQuestion" column="SECURITYQUESTION_ID"/>
- <index name="I_SYNCPSR_REALM" column="REALM_ID"/>
- <index name="I_SYNCPSR_SECURITYQUESTION" column="SECURITYQUESTION_ID"/>
- <unique name="U_SYNCPSR_USERNAME" column="username"/>
- </table>
- <table name="SyncopeUser_AnyTypeClass">
- <column name="user_id" type="varchar" size="36"/>
- <column name="anyTypeClass_id" type="varchar" size="255"/>
- <fk to-table="SyncopeUser" column="user_id"/>
- <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
- <index name="I_SYNCLSS_ELEMENT1" column="anyTypeClass_id"/>
- <index name="I_SYNCLSS_USER_ID" column="user_id"/>
- </table>
- <table name="SyncopeUser_ExternalResource">
- <column name="user_id" type="varchar" size="36"/>
- <column name="resource_id" type="varchar" size="255"/>
- <fk to-table="SyncopeUser" column="user_id"/>
- <fk to-table="ExternalResource" column="resource_id"/>
- <index name="I_SYNCSRC_ELEMENT1" column="resource_id"/>
- <index name="I_SYNCSRC_USER_ID" column="user_id"/>
- </table>
- <table name="SyncopeUser_SyncopeRole">
- <column name="user_id" type="varchar" size="36"/>
- <column name="role_id" type="varchar" size="255"/>
- <fk to-table="SyncopeUser" column="user_id"/>
- <fk to-table="SyncopeRole" column="role_id"/>
- <index name="I_SYNCPRL_ELEMENT" column="role_id"/>
- <index name="I_SYNCPRL_USER_ID" column="user_id"/>
- </table>
- <table name="SyncopeUser_passwordHistory">
- <column name="user_id" type="varchar" size="36"/>
- <column name="passwordHistoryValue" type="varchar" size="255"/>
- <fk to-table="SyncopeUser" column="user_id"/>
- <index name="I_SYNCTRY_USER_ID" column="user_id"/>
- </table>
- <table name="Task">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="DTYPE" type="varchar" size="31"/>
- <column name="active" type="integer"/>
- <column name="cronExpression" type="varchar" size="255"/>
- <column name="description" type="varchar" size="255"/>
- <column name="name" type="varchar" size="255"/>
- <column name="startAt" type="timestamp"/>
- <column name="matchingRule" type="varchar" size="20"/>
- <column name="performCreate" type="integer"/>
- <column name="performDelete" type="integer"/>
- <column name="performUpdate" type="integer"/>
- <column name="syncStatus" type="integer"/>
- <column name="unmatchingRule" type="varchar" size="20"/>
- <column name="pullMode" type="varchar" size="23"/>
- <column name="remediation" type="integer"/>
- <column name="JOBDELEGATE_ID" type="varchar" size="255"/>
- <column name="RESOURCE_ID" type="varchar" size="255"/>
- <column name="DESTINATIONREALM_ID" type="varchar" size="36"/>
- <column name="RECONFILTERBUILDER_ID" type="varchar" size="255"/>
- <column name="anyType" type="varchar" size="255"/>
- <column name="anyTypeKind" type="varchar" size="20"/>
- <column name="attributes" type="clob" size="-1"/>
- <column name="connObjectKey" type="varchar" size="255"/>
- <column name="entityKey" type="varchar" size="255"/>
- <column name="objectClassName" type="varchar" size="255"/>
- <column name="oldConnObjectKey" type="varchar" size="255"/>
- <column name="operation" type="varchar" size="20"/>
- <column name="SOURCEREALM_ID" type="varchar" size="36"/>
- <column name="executed" type="integer"/>
- <column name="htmlBody" type="clob" size="-1"/>
- <column name="sender" type="varchar" size="255"/>
- <column name="subject" type="varchar" size="255"/>
- <column name="textBody" type="clob" size="-1"/>
- <column name="traceLevel" type="varchar" size="20"/>
- <column name="NOTIFICATION_ID" type="varchar" size="36"/>
- <fk to-table="Implementation" column="JOBDELEGATE_ID"/>
- <fk to-table="ExternalResource" column="RESOURCE_ID"/>
- <fk to-table="Realm" column="DESTINATIONREALM_ID"/>
- <fk to-table="Implementation" column="RECONFILTERBUILDER_ID"/>
- <fk to-table="Realm" column="SOURCEREALM_ID"/>
- <fk to-table="Notification" column="NOTIFICATION_ID"/>
- <index name="I_TASK_DESTINATIONREALM" column="DESTINATIONREALM_ID"/>
- <index name="I_TASK_DTYPE" column="DTYPE"/>
- <index name="I_TASK_JOBDELEGATE" column="JOBDELEGATE_ID"/>
- <index name="I_TASK_NOTIFICATION" column="NOTIFICATION_ID"/>
- <index name="I_TASK_RECONFILTERBUILDER" column="RECONFILTERBUILDER_ID"/>
- <index name="I_TASK_RESOURCE" column="RESOURCE_ID"/>
- <index name="I_TASK_SOURCEREALM" column="SOURCEREALM_ID"/>
- </table>
- <table name="TaskExec">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="endDate" type="timestamp"/>
- <column name="message" type="clob" size="-1"/>
- <column name="startDate" type="timestamp"/>
- <column name="status" type="varchar" size="255"/>
- <column name="TASK_ID" type="varchar" size="36"/>
- <fk to-table="Task" column="TASK_ID"/>
- <index name="I_TSKEXEC_TASK" column="TASK_ID"/>
- </table>
- <table name="TypeExtension">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="GROUP_ID" type="varchar" size="36"/>
- <column name="ANYTYPE_ID" type="varchar" size="255"/>
- <fk to-table="SyncopeGroup" column="GROUP_ID"/>
- <fk to-table="AnyType" column="ANYTYPE_ID"/>
- <index name="I_TYPXNSN_ANYTYPE" column="ANYTYPE_ID"/>
- <index name="I_TYPXNSN_GROUP" column="GROUP_ID"/>
- <unique name="U_TYPXNSN_GROUP_ID">
- <on column="GROUP_ID"/>
- <on column="ANYTYPE_ID"/>
- </unique>
- </table>
- <table name="TypeExtension_AnyTypeClass">
- <column name="typeExtension_id" type="varchar" size="36"/>
- <column name="anyTypeClass_id" type="varchar" size="255"/>
- <fk to-table="TypeExtension" column="typeExtension_id"/>
- <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
- <index name="I_TYPXLSS_ELEMENT" column="anyTypeClass_id"/>
- <index name="I_TYPXLSS_TYPEEXTENSION_ID" column="typeExtension_id"/>
- </table>
- <table name="UDynGroupMembership">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="fiql" type="varchar" size="255"/>
- <column name="GROUP_ID" type="varchar" size="36"/>
- <fk to-table="SyncopeGroup" column="GROUP_ID"/>
- <index name="I_DYNGSHP_GROUP1" column="GROUP_ID"/>
- </table>
- <table name="UMembership">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="user_id" type="varchar" size="36"/>
- <column name="group_id" type="varchar" size="36"/>
- <fk to-table="SyncopeUser" column="user_id"/>
- <fk to-table="SyncopeGroup" column="group_id"/>
- <index name="I_MMBRSHP_LEFTEND1" column="user_id"/>
- <index name="I_MMBRSHP_RIGHTEND1" column="group_id"/>
- </table>
- <table name="UPlainAttr">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="OWNER_ID" type="varchar" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <column name="MEMBERSHIP_ID" type="varchar" size="36"/>
- <fk to-table="SyncopeUser" column="OWNER_ID"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <fk to-table="UMembership" column="MEMBERSHIP_ID"/>
- <index name="I_UPLNTTR_MEMBERSHIP" column="MEMBERSHIP_ID"/>
- <index name="I_UPLNTTR_OWNER" column="OWNER_ID"/>
- <index name="I_UPLNTTR_SCHEMA" column="schema_id"/>
- </table>
- <table name="UPlainAttrUniqueValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <column name="schema_id" type="varchar" size="255"/>
- <fk to-table="UPlainAttr" column="ATTRIBUTE_ID"/>
- <fk to-table="PlainSchema" column="schema_id"/>
- <index name="I_PLNTQVL_ATTRIBUTE1" column="ATTRIBUTE_ID"/>
- <index name="I_PLNTQVL_SCHEMA1" column="schema_id"/>
- <unique name="U_PLNTQVL_BOOLEANVALUE1">
- <on column="booleanValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_DATEVALUE1">
- <on column="dateValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_STRINGVALUE1">
- <on column="stringValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_DOUBLEVALUE1">
- <on column="doubleValue"/>
- <on column="schema_id"/>
- </unique>
- <unique name="U_PLNTQVL_LONGVALUE1">
- <on column="longValue"/>
- <on column="schema_id"/>
- </unique>
- </table>
- <table name="UPlainAttrValue">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="binaryValue" type="blob" size="-1"/>
- <column name="booleanValue" type="integer"/>
- <column name="dateValue" type="timestamp"/>
- <column name="doubleValue" type="double"/>
- <column name="longValue" type="bigint"/>
- <column name="stringValue" type="varchar" size="255"/>
- <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
- <fk to-table="UPlainAttr" column="ATTRIBUTE_ID"/>
- <index name="I_PLNTRVL_ATTRIBUTE1" column="ATTRIBUTE_ID"/>
- </table>
- <table name="URelationship">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
- <column name="user_id" type="varchar" size="36"/>
- <column name="anyObject_id" type="varchar" size="36"/>
- <column name="TYPE_ID" type="varchar" size="255"/>
- <fk to-table="SyncopeUser" column="user_id"/>
- <fk to-table="AnyObject" column="anyObject_id"/>
- <fk to-table="RelationshipType" column="TYPE_ID"/>
- <index name="I_RLTNSHP_LEFTEND1" column="user_id"/>
- <index name="I_RLTNSHP_RIGHTEND1" column="anyObject_id"/>
- <index name="I_RLTNSHP_TYPE1" column="TYPE_ID"/>
- <unique name="U_RLTNSHP_TYPE_ID1">
- <on column="TYPE_ID"/>
- <on column="user_id"/>
- <on column="anyObject_id"/>
- </unique>
- </table>
- <table name="VirSchema">
- <pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="255"/>
- <column name="extAttrName" type="varchar" size="255"/>
- <column name="readonly" type="integer"/>
- <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
- <column name="PROVISION_ID" type="varchar" size="36"/>
- <fk to-table="SyncopeSchema" column="id"/>
- <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
- <fk to-table="Provision" column="PROVISION_ID"/>
- <index name="I_VIRSCHM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
- <index name="I_VIRSCHM_PROVISION" column="PROVISION_ID"/>
- </table>
- </schema>
+ <schema>
+ <table name="ADynGroupMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="GROUP_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="GROUP_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_DYNGSHP_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_DYNGSHP_GROUP" column="GROUP_ID"/>
+ </table>
+ <table name="AMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="group_id" type="varchar" size="36"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <index name="I_MMBRSHP_LEFTEND1" column="anyObject_id"/>
+ <index name="I_MMBRSHP_RIGHTEND1" column="group_id"/>
+ </table>
+ <table name="APlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <column name="MEMBERSHIP_ID" type="varchar" size="36"/>
+ <fk to-table="AnyObject" column="OWNER_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <fk to-table="AMembership" column="MEMBERSHIP_ID"/>
+ <index name="I_PLINTTR_MEMBERSHIP" column="MEMBERSHIP_ID"/>
+ <index name="I_PLINTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_PLINTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="APlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="APlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_PLNTQVL_ATTRIBUTE1" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTQVL_SCHEMA1" column="schema_id"/>
+ <unique name="U_PLNTQVL_BOOLEANVALUE1">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DATEVALUE1">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_STRINGVALUE1">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DOUBLEVALUE1">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_LONGVALUE1">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="APlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="APlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTRVL_ATTRIBUTE1" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="ARelationship">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="left_anyObject_id" type="varchar" size="36"/>
+ <column name="right_anyObject_id" type="varchar" size="36"/>
+ <column name="TYPE_ID" type="varchar" size="255"/>
+ <fk to-table="AnyObject" column="left_anyObject_id"/>
+ <fk to-table="AnyObject" column="right_anyObject_id"/>
+ <fk to-table="RelationshipType" column="TYPE_ID"/>
+ <index name="I_RLTNSHP_LEFTEND1" column="left_anyObject_id"/>
+ <index name="I_RLTNSHP_RIGHTEND1" column="right_anyObject_id"/>
+ <index name="I_RLTNSHP_TYPE1" column="TYPE_ID"/>
+ <unique name="U_RLTNSHP_TYPE_ID1">
+ <on column="TYPE_ID"/>
+ <on column="left_anyObject_id"/>
+ <on column="right_anyObject_id"/>
+ </unique>
+ </table>
+ <table name="AccessToken">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="authorities" type="blob" size="-1"/>
+ <column name="body" type="clob" size="-1"/>
+ <column name="expiryTime" type="timestamp"/>
+ <column name="owner" type="varchar" size="255"/>
+ <unique name="U_CCSSTKN_OWNER" column="owner"/>
+ </table>
+ <table name="AccountPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="maxAuthenticationAttempts" type="integer"/>
+ <column name="propagateSuspension" type="integer"/>
+ </table>
+ <table name="AccountPolicyRule">
+ <column name="policy_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="AccountPolicy" column="policy_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_CCNTYRL_ELEMENT" column="implementation_id"/>
+ <index name="I_CCNTYRL_POLICY_ID" column="policy_id"/>
+ <unique name="U_CCNTYRL_POLICY_ID">
+ <on column="policy_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="AccountPolicy_ExternalResource">
+ <column name="accountPolicy_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="AccountPolicy" column="accountPolicy_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_CCNTSRC_ACCOUNTPOLICY_ID" column="accountPolicy_id"/>
+ <index name="I_CCNTSRC_ELEMENT" column="resource_id"/>
+ <unique name="U_CCNTSRC_ACCOUNTPOLICY_ID">
+ <on column="accountPolicy_id"/>
+ <on column="resource_id"/>
+ </unique>
+ </table>
+ <table name="AnyAbout">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="filter" type="clob" size="-1"/>
+ <column name="NOTIFICATION_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="Notification" column="NOTIFICATION_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_NYABOUT_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_NYABOUT_NOTIFICATION" column="NOTIFICATION_ID"/>
+ <unique name="U_NYABOUT_NOTIFICATION_ID">
+ <on column="NOTIFICATION_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="AnyObject">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="creationDate" type="timestamp"/>
+ <column name="creator" type="varchar" size="255"/>
+ <column name="lastChangeDate" type="timestamp"/>
+ <column name="lastModifier" type="varchar" size="255"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="TYPE_ID" type="varchar" size="255"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="AnyType" column="TYPE_ID"/>
+ <index name="I_NYOBJCT_REALM" column="REALM_ID"/>
+ <index name="I_NYOBJCT_TYPE" column="TYPE_ID"/>
+ <unique name="U_NYOBJCT_NAME" column="name"/>
+ </table>
+ <table name="AnyObject_AnyTypeClass">
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_NYBJLSS_ANYOBJECT_ID" column="anyObject_id"/>
+ <index name="I_NYBJLSS_ELEMENT" column="anyTypeClass_id"/>
+ <unique name="U_NYBJLSS_ANYOBJECT_ID">
+ <on column="anyObject_id"/>
+ <on column="anyTypeClass_id"/>
+ </unique>
+ </table>
+ <table name="AnyObject_ExternalResource">
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_NYBJSRC_ANYOBJECT_ID" column="anyObject_id"/>
+ <index name="I_NYBJSRC_ELEMENT" column="resource_id"/>
+ <unique name="U_NYBJSRC_ANYOBJECT_ID">
+ <on column="anyObject_id"/>
+ <on column="resource_id"/>
+ </unique>
+ </table>
+ <table name="AnyTemplatePullTask">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="template" type="clob" size="-1"/>
+ <column name="PULLTASK_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="Task" column="PULLTASK_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_NYTMTSK_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_NYTMTSK_PULLTASK" column="PULLTASK_ID"/>
+ <unique name="U_NYTMTSK_PULLTASK_ID">
+ <on column="PULLTASK_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="AnyTemplateRealm">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="template" type="clob" size="-1"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_NYTMRLM_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_NYTMRLM_REALM" column="REALM_ID"/>
+ <unique name="U_NYTMRLM_REALM_ID">
+ <on column="REALM_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="AnyType">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="kind" type="varchar" size="20"/>
+ </table>
+ <table name="AnyTypeClass">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="AnyType_AnyTypeClass">
+ <column name="anyType_id" type="varchar" size="255"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="AnyType" column="anyType_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_NYTYLSS_ANYTYPE_ID" column="anyType_id"/>
+ <index name="I_NYTYLSS_ELEMENT" column="anyTypeClass_id"/>
+ <unique name="U_NYTYLSS_ANYTYPE_ID">
+ <on column="anyType_id"/>
+ <on column="anyTypeClass_id"/>
+ </unique>
+ </table>
+ <table name="Application">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ </table>
+ <table name="CPlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <column name="OWNER_ID" type="varchar" size="255"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <fk to-table="SyncopeConf" column="OWNER_ID"/>
+ <index name="I_CPLNTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_CPLNTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="CPlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="CPlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_CPLNQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ <index name="I_CPLNQVL_SCHEMA" column="schema_id"/>
+ <unique name="U_CPLNQVL_BOOLEANVALUE">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_DATEVALUE">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_STRINGVALUE">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_DOUBLEVALUE">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_LONGVALUE">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="CPlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="CPlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_CPLNRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="ConnInstance">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="bundleName" type="varchar" size="255"/>
+ <column name="connRequestTimeout" type="integer"/>
+ <column name="connectorName" type="varchar" size="255"/>
+ <column name="displayName" type="varchar" size="255"/>
+ <column name="jsonConf" type="clob" size="-1"/>
+ <column name="location" type="varchar" size="255"/>
+ <column name="version" type="varchar" size="255"/>
+ <column name="ADMINREALM_ID" type="varchar" size="36"/>
+ <column name="maxIdle" type="integer"/>
+ <column name="maxObjects" type="integer"/>
+ <column name="maxWait" type="bigint"/>
+ <column name="minEvictableIdleTimeMillis" type="bigint"/>
+ <column name="minIdle" type="integer"/>
+ <fk to-table="Realm" column="ADMINREALM_ID"/>
+ <index name="I_CNNNTNC_ADMINREALM" column="ADMINREALM_ID"/>
+ <unique name="U_CNNNTNC_DISPLAYNAME" column="displayName"/>
+ </table>
+ <table name="ConnInstance_capabilities">
+ <column name="connInstance_id" type="varchar" size="36"/>
+ <column name="capability" type="varchar" size="20"/>
+ <fk to-table="ConnInstance" column="connInstance_id"/>
+ <index name="I_CNNNLTS_CONNINSTANCE_ID" column="connInstance_id"/>
+ </table>
+ <table name="DerSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="expression" type="varchar" size="255"/>
+ <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeSchema" column="id"/>
+ <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
+ <index name="I_DRSCHEM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
+ </table>
+ <table name="DynRealm">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="DynRealmMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="DYNREALM_ID" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="DynRealm" column="DYNREALM_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_DYNRSHP_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_DYNRSHP_DYNREALM" column="DYNREALM_ID"/>
+ </table>
+ <table name="DynRoleMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="ROLE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="ROLE_ID"/>
+ <index name="I_DYNRSHP_ROLE" column="ROLE_ID"/>
+ </table>
+ <table name="ExternalResource">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="createTraceLevel" type="varchar" size="20"/>
+ <column name="deleteTraceLevel" type="varchar" size="20"/>
+ <column name="enforceMandatoryCondition" type="integer"/>
+ <column name="jsonConf" type="clob" size="-1"/>
+ <column name="overrideCapabilities" type="integer"/>
+ <column name="propagationPriority" type="integer"/>
+ <column name="provisioningTraceLevel" type="varchar" size="20"/>
+ <column name="randomPwdIfNotProvided" type="integer"/>
+ <column name="updateTraceLevel" type="varchar" size="20"/>
+ <column name="ACCOUNTPOLICY_ID" type="varchar" size="36"/>
+ <column name="CONNECTOR_ID" type="varchar" size="36"/>
+ <column name="PASSWORDPOLICY_ID" type="varchar" size="36"/>
+ <column name="PULLPOLICY_ID" type="varchar" size="36"/>
+ <column name="PUSHPOLICY_ID" type="varchar" size="36"/>
+ <fk to-table="AccountPolicy" column="ACCOUNTPOLICY_ID"/>
+ <fk to-table="ConnInstance" column="CONNECTOR_ID"/>
+ <fk to-table="PasswordPolicy" column="PASSWORDPOLICY_ID"/>
+ <fk to-table="PullPolicy" column="PULLPOLICY_ID"/>
+ <fk to-table="PushPolicy" column="PUSHPOLICY_ID"/>
+ <index name="I_XTRNSRC_ACCOUNTPOLICY" column="ACCOUNTPOLICY_ID"/>
+ <index name="I_XTRNSRC_CONNECTOR" column="CONNECTOR_ID"/>
+ <index name="I_XTRNSRC_PASSWORDPOLICY" column="PASSWORDPOLICY_ID"/>
+ <index name="I_XTRNSRC_PULLPOLICY" column="PULLPOLICY_ID"/>
+ <index name="I_XTRNSRC_PUSHPOLICY" column="PUSHPOLICY_ID"/>
+ </table>
+ <table name="ExternalResourcePropAction">
+ <column name="resource_id" type="varchar" size="255"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_XTRNCTN_ELEMENT" column="implementation_id"/>
+ <index name="I_XTRNCTN_RESOURCE_ID" column="resource_id"/>
+ <unique name="U_XTRNCTN_RESOURCE_ID">
+ <on column="resource_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="ExternalResource_capOverride">
+ <column name="resource_id" type="varchar" size="255"/>
+ <column name="capabilityOverride" type="varchar" size="20"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_XTRNRRD_RESOURCE_ID" column="resource_id"/>
+ </table>
+ <table name="GPlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="OWNER_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_GPLNTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_GPLNTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="GPlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="GPlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_GPLNQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ <index name="I_GPLNQVL_SCHEMA" column="schema_id"/>
+ <unique name="U_GPLNQVL_BOOLEANVALUE">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_DATEVALUE">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_STRINGVALUE">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_DOUBLEVALUE">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_LONGVALUE">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="GPlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="GPlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_GPLNRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="Implementation">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="body" type="clob" size="-1"/>
+ <column name="engine" type="varchar" not-null="true" size="20"/>
+ <column name="type" type="varchar" not-null="true" size="21"/>
+ </table>
+ <table name="LAPlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="ACCOUNT_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <fk to-table="LinkedAccount" column="ACCOUNT_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <fk to-table="SyncopeUser" column="OWNER_ID"/>
+ <index name="I_LPLNTTR_ACCOUNT" column="ACCOUNT_ID"/>
+ <index name="I_LPLNTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_LPLNTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="LAPlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="LAPlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_LPLNQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ <index name="I_LPLNQVL_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="LAPlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="LAPlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_LPLNRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="LinkedAccount">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="cipherAlgorithm" type="varchar" size="20"/>
+ <column name="connObjectKeyValue" type="varchar" size="255"/>
+ <column name="password" type="varchar" size="255"/>
+ <column name="suspended" type="integer"/>
+ <column name="username" type="varchar" size="255"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <column name="RESOURCE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="OWNER_ID"/>
+ <fk to-table="ExternalResource" column="RESOURCE_ID"/>
+ <index name="I_LNKDCNT_OWNER" column="OWNER_ID"/>
+ <index name="I_LNKDCNT_RESOURCE" column="RESOURCE_ID"/>
+ <unique name="U_LNKDCNT_CONNOBJECTKEYVALUE">
+ <on column="connObjectKeyValue"/>
+ <on column="RESOURCE_ID"/>
+ </unique>
+ </table>
+ <table name="LinkedAccount_Privilege">
+ <column name="linked_account_id" type="varchar" size="36"/>
+ <column name="privilege_id" type="varchar" size="255"/>
+ <fk to-table="LinkedAccount" column="linked_account_id"/>
+ <fk to-table="Privilege" column="privilege_id"/>
+ <index name="I_LNKDVLG_ELEMENT" column="privilege_id"/>
+ <index name="I_LNKDVLG_LINKED_ACCOUNT_ID" column="linked_account_id"/>
+ <unique name="U_LNKDVLG_LINKED_ACCOUNT_ID">
+ <on column="linked_account_id"/>
+ <on column="privilege_id"/>
+ </unique>
+ </table>
+ <table name="MailTemplate">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="htmlTemplate" type="clob" size="-1"/>
+ <column name="textTemplate" type="clob" size="-1"/>
+ </table>
+ <table name="Mapping">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectLink" type="varchar" size="255"/>
+ <column name="PROVISION_ID" type="varchar" size="36"/>
+ <fk to-table="Provision" column="PROVISION_ID"/>
+ <index name="I_MAPPING_PROVISION" column="PROVISION_ID"/>
+ </table>
+ <table name="MappingItem">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectKey" type="integer"/>
+ <column name="extAttrName" type="varchar" size="255"/>
+ <column name="intAttrName" type="varchar" size="255"/>
+ <column name="mandatoryCondition" type="varchar" size="255"/>
+ <column name="password" type="integer"/>
+ <column name="propJEXL" type="varchar" size="255"/>
+ <column name="pullJEXL" type="varchar" size="255"/>
+ <column name="purpose" type="varchar" size="20"/>
+ <column name="MAPPING_ID" type="varchar" size="36"/>
+ <fk to-table="Mapping" column="MAPPING_ID"/>
+ <index name="I_MPPNGTM_MAPPING" column="MAPPING_ID"/>
+ </table>
+ <table name="MappingItemTransformer">
+ <column name="item_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="MappingItem" column="item_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_MPPNRMR_ELEMENT" column="implementation_id"/>
+ <index name="I_MPPNRMR_ITEM_ID" column="item_id"/>
+ <unique name="U_MPPNRMR_ITEM_ID">
+ <on column="item_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="Notification">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="active" type="integer"/>
+ <column name="recipientAttrName" type="varchar" size="255"/>
+ <column name="recipientsFIQL" type="varchar" size="255"/>
+ <column name="selfAsRecipient" type="integer"/>
+ <column name="sender" type="varchar" size="255"/>
+ <column name="subject" type="varchar" size="255"/>
+ <column name="traceLevel" type="varchar" size="20"/>
+ <column name="RECIPIENTSPROVIDER_ID" type="varchar" size="255"/>
+ <column name="template_id" type="varchar" size="255"/>
+ <fk to-table="Implementation" column="RECIPIENTSPROVIDER_ID"/>
+ <fk to-table="MailTemplate" column="template_id"/>
+ <index name="I_NTFCTON_RECIPIENTSPROVIDER" column="RECIPIENTSPROVIDER_ID"/>
+ <index name="I_NTFCTON_TEMPLATE" column="template_id"/>
+ </table>
+ <table name="NotificationTask_recipients">
+ <column name="notificationTask_id" type="varchar" size="36"/>
+ <column name="address" type="varchar" size="255"/>
+ <fk to-table="Task" column="notificationTask_id"/>
+ <index name="I_NTFCNTS_NOTIFICATIONTASK_ID" column="notificationTask_id"/>
+ </table>
+ <table name="Notification_events">
+ <column name="notification_id" type="varchar" size="36"/>
+ <column name="event" type="varchar" size="255"/>
+ <fk to-table="Notification" column="notification_id"/>
+ <index name="I_NTFCNTS_NOTIFICATION_ID" column="notification_id"/>
+ </table>
+ <table name="Notification_staticRecipients">
+ <column name="notification_id" type="varchar" size="36"/>
+ <column name="staticRecipients" type="varchar" size="255"/>
+ <fk to-table="Notification" column="notification_id"/>
+ <index name="I_NTFCNTS_NOTIFICATION_ID1" column="notification_id"/>
+ </table>
+ <table name="OrgUnit">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectLink" type="varchar" size="255"/>
+ <column name="ignoreCaseMatch" type="integer"/>
+ <column name="objectClass" type="varchar" size="255"/>
+ <column name="serializedSyncToken" type="clob" size="-1"/>
+ <column name="RESOURCE_ID" type="varchar" size="255"/>
+ <fk to-table="ExternalResource" column="RESOURCE_ID"/>
+ <index name="I_ORGUNIT_RESOURCE" column="RESOURCE_ID"/>
+ </table>
+ <table name="OrgUnitItem">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectKey" type="integer"/>
+ <column name="extAttrName" type="varchar" size="255"/>
+ <column name="intAttrName" type="varchar" size="255"/>
+ <column name="mandatoryCondition" type="varchar" size="255"/>
+ <column name="password" type="integer"/>
+ <column name="propJEXL" type="varchar" size="255"/>
+ <column name="pullJEXL" type="varchar" size="255"/>
+ <column name="purpose" type="varchar" size="20"/>
+ <column name="ORGUNIT_ID" type="varchar" size="36"/>
+ <fk to-table="OrgUnit" column="ORGUNIT_ID"/>
+ <index name="I_RGUNTTM_ORGUNIT" column="ORGUNIT_ID"/>
+ </table>
+ <table name="OrgUnitItemTransformer">
+ <column name="item_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="OrgUnitItem" column="item_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_RGNTRMR_ELEMENT" column="implementation_id"/>
+ <index name="I_RGNTRMR_ITEM_ID" column="item_id"/>
+ <unique name="U_RGNTRMR_ITEM_ID">
+ <on column="item_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="PasswordPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="allowNullPassword" type="integer"/>
+ <column name="historyLength" type="integer"/>
+ </table>
+ <table name="PasswordPolicyRule">
+ <column name="policy_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="PasswordPolicy" column="policy_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_PSSWYRL_ELEMENT" column="implementation_id"/>
+ <index name="I_PSSWYRL_POLICY_ID" column="policy_id"/>
+ <unique name="U_PSSWYRL_POLICY_ID">
+ <on column="policy_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="PlainSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="cipherAlgorithm" type="varchar" size="20"/>
+ <column name="conversionPattern" type="varchar" size="255"/>
+ <column name="enumerationKeys" type="clob" size="-1"/>
+ <column name="enumerationValues" type="clob" size="-1"/>
+ <column name="mandatoryCondition" type="varchar" size="255"/>
+ <column name="mimeType" type="varchar" size="255"/>
+ <column name="multivalue" type="integer"/>
+ <column name="readonly" type="integer"/>
+ <column name="secretKey" type="varchar" size="255"/>
+ <column name="type" type="varchar" size="20"/>
+ <column name="uniqueConstraint" type="integer"/>
+ <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
+ <column name="VALIDATOR_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeSchema" column="id"/>
+ <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
+ <fk to-table="Implementation" column="VALIDATOR_ID"/>
+ <index name="I_PLNSCHM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
+ <index name="I_PLNSCHM_VALIDATOR" column="VALIDATOR_ID"/>
+ </table>
+ <table name="Privilege">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="spec" type="clob" size="-1"/>
+ <column name="APPLICATION_ID" type="varchar" size="255"/>
+ <fk to-table="Application" column="APPLICATION_ID"/>
+ <index name="I_PRIVILG_APPLICATION" column="APPLICATION_ID"/>
+ </table>
+ <table name="Provision">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="ignoreCaseMatch" type="integer"/>
+ <column name="objectClass" type="varchar" size="255"/>
+ <column name="serializedSyncToken" type="clob" size="-1"/>
+ <column name="RESOURCE_ID" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="UIDONCREATE_ID" type="varchar" size="255"/>
+ <fk to-table="ExternalResource" column="RESOURCE_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="PlainSchema" column="UIDONCREATE_ID"/>
+ <index name="I_PROVSON_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PROVSON_RESOURCE" column="RESOURCE_ID"/>
+ <index name="I_PROVSON_UIDONCREATE" column="UIDONCREATE_ID"/>
+ <unique name="U_PROVSON_RESOURCE_ID">
+ <on column="RESOURCE_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="Provision_AnyTypeClass">
+ <column name="provision_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="Provision" column="provision_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_PRVSLSS_ELEMENT" column="anyTypeClass_id"/>
+ <index name="I_PRVSLSS_PROVISION_ID" column="provision_id"/>
+ <unique name="U_PRVSLSS_PROVISION_ID">
+ <on column="provision_id"/>
+ <on column="anyTypeClass_id"/>
+ </unique>
+ </table>
+ <table name="PullCorrelationRuleEntity">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="PULLPOLICY_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="IMPLEMENTATION_ID" type="varchar" size="255"/>
+ <fk to-table="PullPolicy" column="PULLPOLICY_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Implementation" column="IMPLEMENTATION_ID"/>
+ <index name="I_PLLCTTY_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PLLCTTY_IMPLEMENTATION" column="IMPLEMENTATION_ID"/>
+ <index name="I_PLLCTTY_PULLPOLICY" column="PULLPOLICY_ID"/>
+ <unique name="U_PLLCTTY_PULLPOLICY_ID">
+ <on column="PULLPOLICY_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="PullPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="conflictResolutionAction" type="varchar" size="20"/>
+ </table>
+ <table name="PullTaskAction">
+ <column name="task_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Task" column="task_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_PLLTCTN_ELEMENT" column="implementation_id"/>
+ <index name="I_PLLTCTN_TASK_ID" column="task_id"/>
+ <unique name="U_PLLTCTN_TASK_ID">
+ <on column="task_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="PushCorrelationRuleEntity">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="PUSHPOLICY_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="IMPLEMENTATION_ID" type="varchar" size="255"/>
+ <fk to-table="PushPolicy" column="PUSHPOLICY_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Implementation" column="IMPLEMENTATION_ID"/>
+ <index name="I_PSHCTTY_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PSHCTTY_IMPLEMENTATION" column="IMPLEMENTATION_ID"/>
+ <index name="I_PSHCTTY_PUSHPOLICY" column="PUSHPOLICY_ID"/>
+ <unique name="U_PSHCTTY_PUSHPOLICY_ID">
+ <on column="PUSHPOLICY_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="PushPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="conflictResolutionAction" type="varchar" size="20"/>
+ </table>
+ <table name="PushTaskAction">
+ <column name="task_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Task" column="task_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_PSHTCTN_ELEMENT" column="implementation_id"/>
+ <index name="I_PSHTCTN_TASK_ID" column="task_id"/>
+ <unique name="U_PSHTCTN_TASK_ID">
+ <on column="task_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="PushTaskAnyFilter">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="PUSHTASK_ID" type="varchar" size="36"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Task" column="PUSHTASK_ID"/>
+ <index name="I_PSHTLTR_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PSHTLTR_PUSHTASK" column="PUSHTASK_ID"/>
+ <unique name="U_PSHTLTR_PUSHTASK_ID">
+ <on column="PUSHTASK_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="Realm">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="ACCOUNTPOLICY_ID" type="varchar" size="36"/>
+ <column name="PARENT_ID" type="varchar" size="36"/>
+ <column name="PASSWORDPOLICY_ID" type="varchar" size="36"/>
+ <fk to-table="AccountPolicy" column="ACCOUNTPOLICY_ID"/>
+ <fk to-table="Realm" column="PARENT_ID"/>
+ <fk to-table="PasswordPolicy" column="PASSWORDPOLICY_ID"/>
+ <index name="I_REALM_ACCOUNTPOLICY" column="ACCOUNTPOLICY_ID"/>
+ <index name="I_REALM_PARENT" column="PARENT_ID"/>
+ <index name="I_REALM_PASSWORDPOLICY" column="PASSWORDPOLICY_ID"/>
+ <unique name="U_REALM_NAME">
+ <on column="name"/>
+ <on column="PARENT_ID"/>
+ </unique>
+ </table>
+ <table name="RealmAction">
+ <column name="realm_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Realm" column="realm_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_RLMCTON_ELEMENT" column="implementation_id"/>
+ <index name="I_RLMCTON_REALM_ID" column="realm_id"/>
+ <unique name="U_RLMCTON_REALM_ID">
+ <on column="realm_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="Realm_ExternalResource">
+ <column name="realm_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="Realm" column="realm_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_RLM_SRC_ELEMENT" column="resource_id"/>
+ <index name="I_RLM_SRC_REALM_ID" column="realm_id"/>
+ <unique name="U_RLM_SRC_REALM_ID">
+ <on column="realm_id"/>
+ <on column="resource_id"/>
+ </unique>
+ </table>
+ <table name="RelationshipType">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ </table>
+ <table name="Remediation">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="error" type="clob" size="-1"/>
+ <column name="instant" type="timestamp"/>
+ <column name="operation" type="varchar" size="20"/>
+ <column name="payload" type="clob" size="-1"/>
+ <column name="remoteName" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="PULLTASK_ID" type="varchar" size="36"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Task" column="PULLTASK_ID"/>
+ <index name="I_RMDTION_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_RMDTION_PULLTASK" column="PULLTASK_ID"/>
+ </table>
+ <table name="Report">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="active" type="integer"/>
+ <column name="cronExpression" type="varchar" size="255"/>
+ <column name="name" type="varchar" not-null="true" size="255"/>
+ <column name="template_id" type="varchar" size="255"/>
+ <fk to-table="ReportTemplate" column="template_id"/>
+ <index name="I_REPORT_TEMPLATE" column="template_id"/>
+ <unique name="U_REPORT_NAME" column="name"/>
+ </table>
+ <table name="ReportExec">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="endDate" type="timestamp"/>
+ <column name="message" type="clob" size="-1"/>
+ <column name="startDate" type="timestamp"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="execResult" type="blob" size="-1"/>
+ <column name="REPORT_ID" type="varchar" size="36"/>
+ <fk to-table="Report" column="REPORT_ID"/>
+ <index name="I_RPORTXC_REPORT" column="REPORT_ID"/>
+ </table>
+ <table name="ReportReportlet">
+ <column name="report_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Report" column="report_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_RPRTTLT_ELEMENT" column="implementation_id"/>
+ <index name="I_RPRTTLT_REPORT_ID" column="report_id"/>
+ <unique name="U_RPRTTLT_REPORT_ID">
+ <on column="report_id"/>
+ <on column="implementation_id"/>
+ </unique>
+ </table>
+ <table name="ReportTemplate">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="csvTemplate" type="clob" size="-1"/>
+ <column name="foTemplate" type="clob" size="-1"/>
+ <column name="htmlTemplate" type="clob" size="-1"/>
+ </table>
+ <table name="SchemaLabel">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="display" type="varchar" not-null="true" size="255"/>
+ <column name="locale" type="varchar" not-null="true" size="255"/>
+ <column name="SCHEMA_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeSchema" column="SCHEMA_ID"/>
+ <index name="I_SCHMLBL_SCHEMA" column="SCHEMA_ID"/>
+ <unique name="U_SCHMLBL_SCHEMA_ID">
+ <on column="SCHEMA_ID"/>
+ <on column="locale"/>
+ </unique>
+ </table>
+ <table name="SecurityQuestion">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="content" type="varchar" size="255"/>
+ <unique name="U_SCRTSTN_CONTENT" column="content"/>
+ </table>
+ <table name="SyncopeBatch">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="expiryTime" type="timestamp"/>
+ <column name="results" type="clob" size="-1"/>
+ </table>
+ <table name="SyncopeConf">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="SyncopeDomain">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="adminCipherAlgorithm" type="varchar" size="20"/>
+ <column name="adminPwd" type="varchar" size="255"/>
+ </table>
+ <table name="SyncopeGroup">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="creationDate" type="timestamp"/>
+ <column name="creator" type="varchar" size="255"/>
+ <column name="lastChangeDate" type="timestamp"/>
+ <column name="lastModifier" type="varchar" size="255"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="GROUPOWNER_ID" type="varchar" size="36"/>
+ <column name="USEROWNER_ID" type="varchar" size="36"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="SyncopeGroup" column="GROUPOWNER_ID"/>
+ <fk to-table="SyncopeUser" column="USEROWNER_ID"/>
+ <index name="I_SYNCGRP_GROUPOWNER" column="GROUPOWNER_ID"/>
+ <index name="I_SYNCGRP_REALM" column="REALM_ID"/>
+ <index name="I_SYNCGRP_USEROWNER" column="USEROWNER_ID"/>
+ <unique name="U_SYNCGRP_NAME" column="name"/>
+ </table>
+ <table name="SyncopeGroup_AnyTypeClass">
+ <column name="group_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_ELEMENT1" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_GROUP_ID" column="group_id"/>
+ <unique name="U_SYNCLSS_GROUP_ID">
+ <on column="group_id"/>
+ <on column="anyTypeClass_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeGroup_ExternalResource">
+ <column name="group_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_SYNCSRC_ELEMENT1" column="resource_id"/>
+ <index name="I_SYNCSRC_GROUP_ID" column="group_id"/>
+ <unique name="U_SYNCSRC_GROUP_ID">
+ <on column="group_id"/>
+ <on column="resource_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeLogger">
+ <pk column="logName"/>
+ <column name="logName" type="varchar" not-null="true" size="255"/>
+ <column name="logLevel" type="varchar" not-null="true" size="20"/>
+ <column name="logType" type="varchar" not-null="true" size="20"/>
+ </table>
+ <table name="SyncopeRole">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="anyLayout" type="clob" size="-1"/>
+ </table>
+ <table name="SyncopeRole_DynRealm">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="dynamicRealm_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <fk to-table="DynRealm" column="dynamicRealm_id"/>
+ <index name="I_SYNCRLM_ELEMENT" column="dynamicRealm_id"/>
+ <index name="I_SYNCRLM_ROLE_ID" column="role_id"/>
+ <unique name="U_SYNCRLM_ROLE_ID">
+ <on column="role_id"/>
+ <on column="dynamicRealm_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeRole_Privilege">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="privilege_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <fk to-table="Privilege" column="privilege_id"/>
+ <index name="I_SYNCVLG_ELEMENT" column="privilege_id"/>
+ <index name="I_SYNCVLG_ROLE_ID" column="role_id"/>
+ <unique name="U_SYNCVLG_ROLE_ID">
+ <on column="role_id"/>
+ <on column="privilege_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeRole_Realm">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="realm_id" type="varchar" size="36"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <fk to-table="Realm" column="realm_id"/>
+ <index name="I_SYNCRLM_ELEMENT1" column="realm_id"/>
+ <index name="I_SYNCRLM_ROLE_ID1" column="role_id"/>
+ <unique name="U_SYNCRLM_ROLE_ID1">
+ <on column="role_id"/>
+ <on column="realm_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeRole_entitlements">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="entitlement" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <index name="I_SYNCNTS_ROLE_ID" column="role_id"/>
+ </table>
+ <table name="SyncopeSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="SyncopeUser">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="creationDate" type="timestamp"/>
+ <column name="creator" type="varchar" size="255"/>
+ <column name="lastChangeDate" type="timestamp"/>
+ <column name="lastModifier" type="varchar" size="255"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="changePwdDate" type="timestamp"/>
+ <column name="cipherAlgorithm" type="varchar" size="20"/>
+ <column name="failedLogins" type="integer"/>
+ <column name="lastLoginDate" type="timestamp"/>
+ <column name="mustChangePassword" type="integer"/>
+ <column name="password" type="varchar" size="255"/>
+ <column name="securityAnswer" type="varchar" size="255"/>
+ <column name="suspended" type="integer"/>
+ <column name="token" type="clob" size="-1"/>
+ <column name="tokenExpireTime" type="timestamp"/>
+ <column name="username" type="varchar" size="255"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="SECURITYQUESTION_ID" type="varchar" size="36"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="SecurityQuestion" column="SECURITYQUESTION_ID"/>
+ <index name="I_SYNCPSR_REALM" column="REALM_ID"/>
+ <index name="I_SYNCPSR_SECURITYQUESTION" column="SECURITYQUESTION_ID"/>
+ <unique name="U_SYNCPSR_USERNAME" column="username"/>
+ </table>
+ <table name="SyncopeUser_AnyTypeClass">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_ELEMENT" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_USER_ID" column="user_id"/>
+ <unique name="U_SYNCLSS_USER_ID">
+ <on column="user_id"/>
+ <on column="anyTypeClass_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeUser_ExternalResource">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_SYNCSRC_ELEMENT" column="resource_id"/>
+ <index name="I_SYNCSRC_USER_ID" column="user_id"/>
+ <unique name="U_SYNCSRC_USER_ID">
+ <on column="user_id"/>
+ <on column="resource_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeUser_SyncopeRole">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="role_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <index name="I_SYNCPRL_ELEMENT" column="role_id"/>
+ <index name="I_SYNCPRL_USER_ID" column="user_id"/>
+ <unique name="U_SYNCPRL_USER_ID">
+ <on column="user_id"/>
+ <on column="role_id"/>
+ </unique>
+ </table>
+ <table name="SyncopeUser_passwordHistory">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="passwordHistoryValue" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <index name="I_SYNCTRY_USER_ID" column="user_id"/>
+ </table>
+ <table name="Task">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="DTYPE" type="varchar" size="31"/>
+ <column name="active" type="integer"/>
+ <column name="cronExpression" type="varchar" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="startAt" type="timestamp"/>
+ <column name="matchingRule" type="varchar" size="20"/>
+ <column name="performCreate" type="integer"/>
+ <column name="performDelete" type="integer"/>
+ <column name="performUpdate" type="integer"/>
+ <column name="syncStatus" type="integer"/>
+ <column name="unmatchingRule" type="varchar" size="20"/>
+ <column name="JOBDELEGATE_ID" type="varchar" size="255"/>
+ <column name="RESOURCE_ID" type="varchar" size="255"/>
+ <column name="SOURCEREALM_ID" type="varchar" size="36"/>
+ <column name="pullMode" type="varchar" size="23"/>
+ <column name="remediation" type="integer"/>
+ <column name="DESTINATIONREALM_ID" type="varchar" size="36"/>
+ <column name="RECONFILTERBUILDER_ID" type="varchar" size="255"/>
+ <column name="anyTypeKind" type="varchar" size="20"/>
+ <column name="entityKey" type="varchar" size="255"/>
+ <column name="executed" type="integer"/>
+ <column name="htmlBody" type="clob" size="-1"/>
+ <column name="sender" type="varchar" size="255"/>
+ <column name="subject" type="varchar" size="255"/>
+ <column name="textBody" type="clob" size="-1"/>
+ <column name="traceLevel" type="varchar" size="20"/>
+ <column name="NOTIFICATION_ID" type="varchar" size="36"/>
+ <column name="anyType" type="varchar" size="255"/>
+ <column name="attributes" type="clob" size="-1"/>
+ <column name="connObjectKey" type="varchar" size="255"/>
+ <column name="objectClassName" type="varchar" size="255"/>
+ <column name="oldConnObjectKey" type="varchar" size="255"/>
+ <column name="operation" type="varchar" size="20"/>
+ <fk to-table="Implementation" column="JOBDELEGATE_ID"/>
+ <fk to-table="ExternalResource" column="RESOURCE_ID"/>
+ <fk to-table="Realm" column="SOURCEREALM_ID"/>
+ <fk to-table="Realm" column="DESTINATIONREALM_ID"/>
+ <fk to-table="Implementation" column="RECONFILTERBUILDER_ID"/>
+ <fk to-table="Notification" column="NOTIFICATION_ID"/>
+ <index name="I_TASK_DESTINATIONREALM" column="DESTINATIONREALM_ID"/>
+ <index name="I_TASK_DTYPE" column="DTYPE"/>
+ <index name="I_TASK_JOBDELEGATE" column="JOBDELEGATE_ID"/>
+ <index name="I_TASK_NOTIFICATION" column="NOTIFICATION_ID"/>
+ <index name="I_TASK_RECONFILTERBUILDER" column="RECONFILTERBUILDER_ID"/>
+ <index name="I_TASK_RESOURCE" column="RESOURCE_ID"/>
+ <index name="I_TASK_SOURCEREALM" column="SOURCEREALM_ID"/>
+ </table>
+ <table name="TaskExec">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="endDate" type="timestamp"/>
+ <column name="message" type="clob" size="-1"/>
+ <column name="startDate" type="timestamp"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="TASK_ID" type="varchar" size="36"/>
+ <fk to-table="Task" column="TASK_ID"/>
+ <index name="I_TSKEXEC_TASK" column="TASK_ID"/>
+ </table>
+ <table name="TypeExtension">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="GROUP_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="GROUP_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_TYPXNSN_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_TYPXNSN_GROUP" column="GROUP_ID"/>
+ <unique name="U_TYPXNSN_GROUP_ID">
+ <on column="GROUP_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="TypeExtension_AnyTypeClass">
+ <column name="typeExtension_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="TypeExtension" column="typeExtension_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_TYPXLSS_ELEMENT" column="anyTypeClass_id"/>
+ <index name="I_TYPXLSS_TYPEEXTENSION_ID" column="typeExtension_id"/>
+ <unique name="U_TYPXLSS_TYPEEXTENSION_ID">
+ <on column="typeExtension_id"/>
+ <on column="anyTypeClass_id"/>
+ </unique>
+ </table>
+ <table name="UDynGroupMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="GROUP_ID" type="varchar" size="36"/>
+ <fk to-table="SyncopeGroup" column="GROUP_ID"/>
+ <index name="I_DYNGSHP_GROUP1" column="GROUP_ID"/>
+ </table>
+ <table name="UMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="group_id" type="varchar" size="36"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <index name="I_MMBRSHP_LEFTEND" column="user_id"/>
+ <index name="I_MMBRSHP_RIGHTEND" column="group_id"/>
+ </table>
+ <table name="UPlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <column name="MEMBERSHIP_ID" type="varchar" size="36"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <fk to-table="UMembership" column="MEMBERSHIP_ID"/>
+ <fk to-table="SyncopeUser" column="OWNER_ID"/>
+ <index name="I_UPLNTTR_MEMBERSHIP" column="MEMBERSHIP_ID"/>
+ <index name="I_UPLNTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_UPLNTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="UPlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="UPlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_PLNTQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTQVL_SCHEMA" column="schema_id"/>
+ <unique name="U_PLNTQVL_BOOLEANVALUE">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DATEVALUE">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_STRINGVALUE">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DOUBLEVALUE">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_LONGVALUE">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="UPlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="UPlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="URelationship">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="TYPE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="RelationshipType" column="TYPE_ID"/>
+ <index name="I_RLTNSHP_LEFTEND" column="user_id"/>
+ <index name="I_RLTNSHP_RIGHTEND" column="anyObject_id"/>
+ <index name="I_RLTNSHP_TYPE" column="TYPE_ID"/>
+ <unique name="U_RLTNSHP_TYPE_ID">
+ <on column="TYPE_ID"/>
+ <on column="user_id"/>
+ <on column="anyObject_id"/>
+ </unique>
+ </table>
+ <table name="VirSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="extAttrName" type="varchar" size="255"/>
+ <column name="readonly" type="integer"/>
+ <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
+ <column name="PROVISION_ID" type="varchar" size="36"/>
+ <fk to-table="SyncopeSchema" column="id"/>
+ <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
+ <fk to-table="Provision" column="PROVISION_ID"/>
+ <index name="I_VIRSCHM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
+ <index name="I_VIRSCHM_PROVISION" column="PROVISION_ID"/>
+ </table>
+ </schema>
</schemas>
\ No newline at end of file
diff --git a/docker/core/src/main/resources/domains/MasterContent.xml.all b/docker/core/src/main/resources/domains/MasterContent.xml.all
index fd66eb6..39aa841 100644
--- a/docker/core/src/main/resources/domains/MasterContent.xml.all
+++ b/docker/core/src/main/resources/domains/MasterContent.xml.all
@@ -135,23 +135,6 @@ under the License.
<CPlainAttrValue id="447e2456-3ff5-41bc-8ff1-cbb0567546cb"
attribute_id="cfec3140-562d-459c-ac6a-e3e10758661d" longValue="120"/>
- <!-- Connector and Resource configuration history -->
- <SyncopeSchema id="connector.conf.history.size"/>
- <PlainSchema id="connector.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CPlainAttr id="ae36c6ab-0f39-40d7-b6e6-3b8394547c9c"
- owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="connector.conf.history.size"/>
- <CPlainAttrValue id="4989ce5d-7b42-4a5c-b725-54286888df10"
- attribute_id="ae36c6ab-0f39-40d7-b6e6-3b8394547c9c" longValue="10"/>
-
- <SyncopeSchema id="resource.conf.history.size"/>
- <PlainSchema id="resource.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CPlainAttr id="ae7ae53a-74cf-48b0-9a57-6d2c94928e60"
- owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="resource.conf.history.size"/>
- <CPlainAttrValue id="059ac3e1-687f-4dd9-a28b-a23f8b436f31"
- attribute_id="ae7ae53a-74cf-48b0-9a57-6d2c94928e60" longValue="10"/>
-
<AnyType id="USER" kind="USER"/>
<AnyTypeClass id="BaseUser"/>
<AnyType_AnyTypeClass anyType_id="USER" anyTypeClass_id="BaseUser"/>
diff --git a/docker/core/src/main/resources/domains/MasterContent.xml.myjson b/docker/core/src/main/resources/domains/MasterContent.xml.myjson
index 814b3c6..f606503 100644
--- a/docker/core/src/main/resources/domains/MasterContent.xml.myjson
+++ b/docker/core/src/main/resources/domains/MasterContent.xml.myjson
@@ -77,17 +77,8 @@ under the License.
<PlainSchema id="jwt.lifetime.minutes" type="Long"
mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <!-- Connector and Resource configuration history -->
- <SyncopeSchema id="connector.conf.history.size"/>
- <PlainSchema id="connector.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
- <SyncopeSchema id="resource.conf.history.size"/>
- <PlainSchema id="resource.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
<SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"
- plainAttrs="[{"values":[{"stringValue":"SSHA256"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":""}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{"values&q [...]
+ plainAttrs="[{"values":[{"stringValue":"SSHA256"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":""}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{"values":[{ [...]
<AnyType id="USER" kind="USER"/>
<AnyTypeClass id="BaseUser"/>
diff --git a/docker/core/src/main/resources/domains/MasterContent.xml.pgjsonb b/docker/core/src/main/resources/domains/MasterContent.xml.pgjsonb
index 814b3c6..7bb6501 100644
--- a/docker/core/src/main/resources/domains/MasterContent.xml.pgjsonb
+++ b/docker/core/src/main/resources/domains/MasterContent.xml.pgjsonb
@@ -77,17 +77,8 @@ under the License.
<PlainSchema id="jwt.lifetime.minutes" type="Long"
mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <!-- Connector and Resource configuration history -->
- <SyncopeSchema id="connector.conf.history.size"/>
- <PlainSchema id="connector.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
- <SyncopeSchema id="resource.conf.history.size"/>
- <PlainSchema id="resource.conf.history.size" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
<SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"
- plainAttrs="[{"values":[{"stringValue":"SSHA256"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":""}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{"values&q [...]
+ plainAttrs="[{"values":[{"stringValue":"SSHA256"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":""}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{"values":[{ [...]
<AnyType id="USER" kind="USER"/>
<AnyTypeClass id="BaseUser"/>
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
index 9e07481..5118a96 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
@@ -80,7 +80,6 @@ import org.apache.syncope.common.rest.api.service.ApplicationService;
import org.apache.syncope.common.rest.api.service.AuditService;
import org.apache.syncope.common.rest.api.service.CamelRouteService;
import org.apache.syncope.common.rest.api.service.ConfigurationService;
-import org.apache.syncope.common.rest.api.service.ConnectorHistoryService;
import org.apache.syncope.common.rest.api.service.ConnectorService;
import org.apache.syncope.common.rest.api.service.DomainService;
import org.apache.syncope.common.rest.api.service.DynRealmService;
@@ -99,7 +98,6 @@ import org.apache.syncope.common.rest.api.service.ReconciliationService;
import org.apache.syncope.common.rest.api.service.RelationshipTypeService;
import org.apache.syncope.common.rest.api.service.RemediationService;
import org.apache.syncope.common.rest.api.service.ReportTemplateService;
-import org.apache.syncope.common.rest.api.service.ResourceHistoryService;
import org.apache.syncope.common.rest.api.service.RoleService;
import org.apache.syncope.common.rest.api.service.SAML2IdPService;
import org.apache.syncope.common.rest.api.service.SAML2SPService;
@@ -190,6 +188,8 @@ public abstract class AbstractITCase {
protected static final String PRINTER = "PRINTER";
+ protected static final int MAX_WAIT_SECONDS = 50;
+
protected static String ANONYMOUS_UNAME;
protected static String ANONYMOUS_KEY;
@@ -236,14 +236,10 @@ public abstract class AbstractITCase {
protected static ResourceService resourceService;
- protected static ResourceHistoryService resourceHistoryService;
-
protected static ConfigurationService configurationService;
protected static ConnectorService connectorService;
- protected static ConnectorHistoryService connectorHistoryService;
-
protected static LoggerService loggerService;
protected static ReportTemplateService reportTemplateService;
@@ -333,10 +329,8 @@ public abstract class AbstractITCase {
userWorkflowTaskService = adminClient.getService(UserWorkflowTaskService.class);
groupService = adminClient.getService(GroupService.class);
resourceService = adminClient.getService(ResourceService.class);
- resourceHistoryService = adminClient.getService(ResourceHistoryService.class);
configurationService = adminClient.getService(ConfigurationService.class);
connectorService = adminClient.getService(ConnectorService.class);
- connectorHistoryService = adminClient.getService(ConnectorHistoryService.class);
loggerService = adminClient.getService(LoggerService.class);
reportTemplateService = adminClient.getService(ReportTemplateService.class);
reportService = adminClient.getService(ReportService.class);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java
index 21718f7..d3f74c7 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java
@@ -23,7 +23,6 @@ import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.Types;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
import org.apache.wicket.util.tester.FormTester;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
public abstract class AbstractTypesITCase extends AbstractConsoleITCase {
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java
index 7ebfc38..07803cb 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java
@@ -70,7 +70,7 @@ public class AnyObjectsITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
- + "actions:actions:actionRepeater:1:action:action");
+ + "actions:actions:actionRepeater:5:action:action");
FormTester formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
assertNotNull(formTester);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java
index d347743..de2dde3 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/BatchesITCase.java
@@ -78,7 +78,7 @@ public class BatchesITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
// manage resource
TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:1"
- + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:5:"
+ + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:4:"
+ "action:action");
TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
@@ -131,7 +131,7 @@ public class BatchesITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
// enable
TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:1"
- + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:4:"
+ + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:3:"
+ "action:action");
TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
@@ -194,7 +194,7 @@ public class BatchesITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
// enable
TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:1"
- + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:4:"
+ + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:3:"
+ "action:action");
TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
@@ -254,7 +254,7 @@ public class BatchesITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
// manage resource
TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:1"
- + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:6:"
+ + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:5:"
+ "action:action");
TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
@@ -302,7 +302,7 @@ public class BatchesITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
// manage resource
TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:1"
- + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:2:"
+ + ":outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:"
+ "action:action");
TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:2:outer:form:content:status:"
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java
index 8e8bc70..e47f9cd 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java
@@ -53,7 +53,7 @@ public class GroupsITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
- + "actions:actions:actionRepeater:3:action:action");
+ + "actions:actions:actionRepeater:2:action:action");
FormTester formTester = TESTER.newFormTester(TAB_PANEL
+ "outerObjectsRepeater:7:outer:container:content:togglePanelContainer:membersForm");
@@ -97,7 +97,7 @@ public class GroupsITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
- + "actions:actions:actionRepeater:1:action:action");
+ + "actions:actions:actionRepeater:9:action:action");
TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form:view:name:textField",
TextField.class);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java
index a4e84af..5df46f5 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java
@@ -727,7 +727,7 @@ public class PoliciesITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:"
- + "1:outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:"
+ + "1:outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:9:"
+ "action:action");
TESTER.assertComponent(
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java
index ff0be0f..a79f7e0 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java
@@ -75,7 +75,7 @@ public class UsersITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
- + "actions:actions:actionRepeater:2:action:action");
+ + "actions:actions:actionRepeater:1:action:action");
TESTER.assertInfoMessages("Operation executed successfully");
}
@@ -91,7 +91,7 @@ public class UsersITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
- + "actions:actions:actionRepeater:1:action:action");
+ + "actions:actions:actionRepeater:9:action:action");
TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form:view:username:textField",
TextField.class);
@@ -657,7 +657,7 @@ public class UsersITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
- + "actions:actions:actionRepeater:3:action:action");
+ + "actions:actions:actionRepeater:2:action:action");
TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:3:outer:form:content:status:resources:"
+ "firstLevelContainer:first:container:content:group:beans:0:fields:0:field", "syncope");
@@ -682,7 +682,7 @@ public class UsersITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
- + "actions:actions:actionRepeater:3:action:action");
+ + "actions:actions:actionRepeater:2:action:action");
TESTER.assertLabel(TAB_PANEL + "outerObjectsRepeater:3:outer:form:content:status:resources:"
+ "firstLevelContainer:first:container:content:group:beans:0:fields:0:field", "syncope");
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
index 5bfa1b4..43d077e 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
@@ -172,14 +172,14 @@ public abstract class AbstractTaskITCase extends AbstractITCase {
ExecutorService service = Executors.newFixedThreadPool(taskKeys.size());
List<Future<ExecTO>> futures = new ArrayList<>();
- for (String key : taskKeys) {
+ taskKeys.forEach(key -> {
futures.add(service.submit(new ThreadExec(taskService, type, key, maxWaitSeconds, dryRun)));
// avoid flooding the test server
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
- }
+ });
for (Future<ExecTO> future : futures) {
future.get(100, TimeUnit.SECONDS);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
index e3ceffa..4c1927a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
@@ -22,25 +22,31 @@ import static org.junit.jupiter.api.Assertions.fail;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import com.fasterxml.jackson.core.JsonProcessingException;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
-
+import java.util.Set;
+import org.apache.commons.lang3.SerializationUtils;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.to.AuditEntryTO;
+import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.PagedResult;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AuditElements;
+import org.apache.syncope.common.lib.types.ConnConfProperty;
+import org.apache.syncope.common.lib.types.ConnectorCapability;
import org.apache.syncope.common.rest.api.beans.AnyQuery;
import org.apache.syncope.common.rest.api.beans.AuditQuery;
import org.apache.syncope.fit.AbstractITCase;
import org.junit.jupiter.api.Test;
public class AuditITCase extends AbstractITCase {
- private static final int MAX_WAIT_SECONDS = 50;
private static AuditEntryTO query(final AuditQuery query, final int maxWaitSeconds, final boolean failIfEmpty) {
List<AuditEntryTO> results = query(query, maxWaitSeconds);
@@ -77,9 +83,10 @@ public class AuditITCase extends AbstractITCase {
assertEquals(1, entries.size());
PagedResult<UserTO> usersTOs = userService.search(
- new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
- fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo(userTO.getUsername()).query()).
- build());
+ new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getUserSearchConditionBuilder().
+ is("username").equalTo(userTO.getUsername()).query()).
+ build());
assertNotNull(usersTOs);
assertFalse(usersTOs.getResult().isEmpty());
@@ -140,9 +147,10 @@ public class AuditITCase extends AbstractITCase {
assertEquals(1, entries.size());
PagedResult<GroupTO> groups = groupService.search(
- new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
- fiql(SyncopeClient.getGroupSearchConditionBuilder().is("name").equalTo(groupTO.getName()).query()).
- build());
+ new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getGroupSearchConditionBuilder().
+ is("name").equalTo(groupTO.getName()).query()).
+ build());
assertNotNull(groups);
assertFalse(groups.getResult().isEmpty());
@@ -155,7 +163,7 @@ public class AuditITCase extends AbstractITCase {
AnyObjectTO anyObjectTO = createAnyObject(AnyObjectITCase.getSampleTO("Italy")).getEntity();
assertNotNull(anyObjectTO.getKey());
AuditQuery query = new AuditQuery.Builder(anyObjectTO.getKey()).orderBy("event_date desc").
- page(1).size(1).build();
+ page(1).size(1).build();
AuditEntryTO entry = query(query, MAX_WAIT_SECONDS, true);
assertEquals(anyObjectTO.getKey(), entry.getKey());
anyObjectService.delete(anyObjectTO.getKey());
@@ -172,13 +180,57 @@ public class AuditITCase extends AbstractITCase {
assertEquals(1, entries.size());
PagedResult<AnyObjectTO> anyObjects = anyObjectService.search(
- new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
- fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(anyObjectTO.getType()).query()).
- build());
+ new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(anyObjectTO.getType()).query()).
+ build());
assertNotNull(anyObjects);
assertFalse(anyObjects.getResult().isEmpty());
-
+
entries = query(query, MAX_WAIT_SECONDS);
assertEquals(1, entries.size());
}
+
+ @Test
+ public void findByConnector() throws JsonProcessingException {
+ String connectorKey = "74141a3b-0762-4720-a4aa-fc3e374ef3ef";
+
+ AuditQuery query = new AuditQuery.Builder(connectorKey).
+ orderBy("event_date desc").
+ type(AuditElements.EventCategoryType.LOGIC).
+ category("ConnectorLogic").
+ event("update").
+ result(AuditElements.Result.SUCCESS).
+ build();
+ List<AuditEntryTO> entries = query(query, 0);
+ int pre = entries.size();
+
+ ConnInstanceTO ldapConn = connectorService.read(connectorKey, null);
+ String originalDisplayName = ldapConn.getDisplayName();
+ Set<ConnectorCapability> originalCapabilities = new HashSet<>(ldapConn.getCapabilities());
+ ConnConfProperty originalConfProp = SerializationUtils.clone(
+ ldapConn.getConf("maintainPosixGroupMembership").get());
+ assertEquals(1, originalConfProp.getValues().size());
+ assertEquals("false", originalConfProp.getValues().get(0));
+
+ ldapConn.setDisplayName(originalDisplayName + " modified");
+ ldapConn.getCapabilities().clear();
+ ldapConn.getConf("maintainPosixGroupMembership").get().getValues().set(0, "true");
+ connectorService.update(ldapConn);
+
+ ldapConn = connectorService.read(connectorKey, null);
+ assertNotEquals(originalDisplayName, ldapConn.getDisplayName());
+ assertNotEquals(originalCapabilities, ldapConn.getCapabilities());
+ assertNotEquals(originalConfProp, ldapConn.getConf("maintainPosixGroupMembership"));
+
+ entries = query(query, MAX_WAIT_SECONDS);
+ assertEquals(pre + 1, entries.size());
+
+ ConnInstanceTO restore = MAPPER.readValue(entries.get(0).getBefore(), ConnInstanceTO.class);
+ connectorService.update(restore);
+
+ ldapConn = connectorService.read(connectorKey, null);
+ assertEquals(originalDisplayName, ldapConn.getDisplayName());
+ assertEquals(originalCapabilities, ldapConn.getCapabilities());
+ assertEquals(originalConfProp, ldapConn.getConf("maintainPosixGroupMembership").get());
+ }
}
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java
index cbdb19b..29703fa 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java
@@ -535,9 +535,9 @@ public class AuthenticationITCase extends AbstractITCase {
assertNotNull(user);
// 4. check that the db resource has still the initial password value
- final JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
- String value = queryForObject(
- jdbcTemplate, 50, "SELECT PASSWORD FROM test WHERE ID=?", String.class, user.getUsername());
+ JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
+ String value = queryForObject(jdbcTemplate, MAX_WAIT_SECONDS,
+ "SELECT PASSWORD FROM test WHERE ID=?", String.class, user.getUsername());
assertEquals(Encryptor.getInstance().encode("password123", CipherAlgorithm.SHA1), value.toUpperCase());
// 5. successfully authenticate with old (on db resource) and new (on internal storage) password values
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java
index 7def155..c595475 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java
@@ -20,7 +20,6 @@ package org.apache.syncope.fit.core;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -39,14 +38,12 @@ import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.ws.rs.core.Response;
-import org.apache.commons.lang3.SerializationUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.ConnBundleTO;
import org.apache.syncope.common.lib.to.ConnIdObjectClassTO;
-import org.apache.syncope.common.lib.to.ConnInstanceHistoryConfTO;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ConnPoolConfTO;
import org.apache.syncope.common.lib.to.ItemTO;
@@ -476,41 +473,6 @@ public class ConnectorITCase extends AbstractITCase {
}
@Test
- public void history() {
- List<ConnInstanceHistoryConfTO> history = connectorHistoryService.list("74141a3b-0762-4720-a4aa-fc3e374ef3ef");
- assertNotNull(history);
- int pre = history.size();
-
- ConnInstanceTO ldapConn = connectorService.read("74141a3b-0762-4720-a4aa-fc3e374ef3ef", null);
- String originalDisplayName = ldapConn.getDisplayName();
- Set<ConnectorCapability> originalCapabilities = new HashSet<>(ldapConn.getCapabilities());
- ConnConfProperty originalConfProp = SerializationUtils.clone(
- ldapConn.getConf("maintainPosixGroupMembership").get());
- assertEquals(1, originalConfProp.getValues().size());
- assertEquals("false", originalConfProp.getValues().get(0));
-
- ldapConn.setDisplayName(originalDisplayName + " modified");
- ldapConn.getCapabilities().clear();
- ldapConn.getConf("maintainPosixGroupMembership").get().getValues().set(0, "true");
- connectorService.update(ldapConn);
-
- ldapConn = connectorService.read("74141a3b-0762-4720-a4aa-fc3e374ef3ef", null);
- assertNotEquals(originalDisplayName, ldapConn.getDisplayName());
- assertNotEquals(originalCapabilities, ldapConn.getCapabilities());
- assertNotEquals(originalConfProp, ldapConn.getConf("maintainPosixGroupMembership"));
-
- history = connectorHistoryService.list("74141a3b-0762-4720-a4aa-fc3e374ef3ef");
- assertEquals(pre + 1, history.size());
-
- connectorHistoryService.restore(history.get(0).getKey());
-
- ldapConn = connectorService.read("74141a3b-0762-4720-a4aa-fc3e374ef3ef", null);
- assertEquals(originalDisplayName, ldapConn.getDisplayName());
- assertEquals(originalCapabilities, ldapConn.getCapabilities());
- assertEquals(originalConfProp, ldapConn.getConf("maintainPosixGroupMembership").get());
- }
-
- @Test
public void authorizations() {
SyncopeClient puccini = clientFactory.create("puccini", ADMIN_PWD);
ConnectorService pcs = puccini.getService(ConnectorService.class);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
index 3a20570..c42b60a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
@@ -963,7 +963,6 @@ public class GroupITCase extends AbstractITCase {
assertNotNull(exec.getRefKey());
int i = 0;
- int maxit = 50;
// wait for task exec completion (executions incremented)
SchedTaskTO taskTO;
@@ -975,7 +974,7 @@ public class GroupITCase extends AbstractITCase {
assertNotNull(taskTO);
assertNotNull(taskTO.getExecutions());
i++;
- } while (taskTO.getExecutions().isEmpty() && i < maxit);
+ } while (taskTO.getExecutions().isEmpty() && i < MAX_WAIT_SECONDS);
assertFalse(taskTO.getExecutions().isEmpty());
assertEquals(TaskJob.Status.SUCCESS.name(), taskTO.getExecutions().get(0).getStatus());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java
index 93214d7..829570f 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java
@@ -259,7 +259,8 @@ public class LinkedAccountITCase extends AbstractITCase {
assertNotNull(sendUser);
// 5. execute PushTask
- AbstractTaskITCase.execProvisioningTask(taskService, TaskType.PUSH, sendUser.getKey(), 50, false);
+ AbstractTaskITCase.execProvisioningTask(
+ taskService, TaskType.PUSH, sendUser.getKey(), MAX_WAIT_SECONDS, false);
TaskTO task = taskService.read(TaskType.PUSH, sendUser.getKey(), true);
assertEquals(1, task.getExecutions().size());
@@ -403,7 +404,8 @@ public class LinkedAccountITCase extends AbstractITCase {
List<LinkedAccountTO> accounts = userService.read("vivaldi").getLinkedAccounts();
assertTrue(accounts.isEmpty());
- ExecTO exec = AbstractTaskITCase.execProvisioningTask(taskService, TaskType.PULL, pullTaskKey, 50, false);
+ ExecTO exec = AbstractTaskITCase.execProvisioningTask(
+ taskService, TaskType.PULL, pullTaskKey, MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
assertTrue(exec.getMessage().contains("Accounts created"));
@@ -452,7 +454,8 @@ public class LinkedAccountITCase extends AbstractITCase {
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
// 4. execute pull task again and verify linked accounts were pulled
- exec = AbstractTaskITCase.execProvisioningTask(taskService, TaskType.PULL, pullTaskKey, 50, false);
+ exec = AbstractTaskITCase.execProvisioningTask(
+ taskService, TaskType.PULL, pullTaskKey, MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
assertTrue(exec.getMessage().contains("Accounts updated"));
assertTrue(exec.getMessage().contains("Accounts deleted"));
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java
index 4fd5e05..5e64d99 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java
@@ -255,7 +255,7 @@ public class MembershipITCase extends AbstractITCase {
// 2. verify that user was found on resource
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
String idOnResource = queryForObject(
- jdbcTemplate, 50, "SELECT id FROM testpull WHERE id=?", String.class, "5432");
+ jdbcTemplate, MAX_WAIT_SECONDS, "SELECT id FROM testpull WHERE id=?", String.class, "5432");
assertEquals("5432", idOnResource);
// 3. unlink user from resource, then remove it
@@ -277,7 +277,7 @@ public class MembershipITCase extends AbstractITCase {
assertNotNull(newTask);
ExecTO execution = AbstractTaskITCase.execProvisioningTask(
- taskService, TaskType.PULL, newTask.getKey(), 50, false);
+ taskService, TaskType.PULL, newTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
// 5. verify that pulled user has
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index a2d698b..6c74240 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -221,7 +221,7 @@ public class MultitenancyITCase extends AbstractITCase {
// pull
ExecTO execution = AbstractTaskITCase.execProvisioningTask(
- adminClient.getService(TaskService.class), TaskType.PULL, task.getKey(), 50, false);
+ adminClient.getService(TaskService.class), TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
// verify execution status
String status = execution.getStatus();
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
index 760c977..9d266a6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
@@ -237,7 +237,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
page(1).size(1).build()).getTotalCount();
assertNotNull(usersPre);
- ExecTO exec = execProvisioningTask(taskService, TaskType.PULL, PULL_TASK_KEY, 50, false);
+ ExecTO exec = execProvisioningTask(taskService, TaskType.PULL, PULL_TASK_KEY, MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
LOG.debug("Execution of task {}:\n{}", PULL_TASK_KEY, exec);
@@ -305,7 +305,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
Set<String> otherPullTaskKeys = new HashSet<>();
otherPullTaskKeys.add("feae4e57-15ca-40d9-b973-8b9015efca49");
otherPullTaskKeys.add("55d5e74b-497e-4bc0-9156-73abef4b9adc");
- execProvisioningTasks(taskService, TaskType.PULL, otherPullTaskKeys, 50, false);
+ execProvisioningTasks(taskService, TaskType.PULL, otherPullTaskKeys, MAX_WAIT_SECONDS, false);
// Matching --> UNLINK
assertFalse(userService.read("test9").getResources().contains(RESOURCE_NAME_CSV));
@@ -317,7 +317,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
@Test
public void dryRun() {
- ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, PULL_TASK_KEY, 50, true);
+ ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, PULL_TASK_KEY, MAX_WAIT_SECONDS, true);
assertEquals("SUCCESS", execution.getStatus());
}
@@ -327,7 +327,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
try {
ExecTO execution = execProvisioningTask(
- taskService, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", 50, false);
+ taskService, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
userTO = userService.read("testuser1");
@@ -340,7 +340,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
// re-execute the same PullTask: now user must be active
execution = execProvisioningTask(
- taskService, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", 50, false);
+ taskService, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
userTO = userService.read("testuser1");
@@ -361,7 +361,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
// 0. pull
ExecTO execution = execProvisioningTask(
- taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", 50, false);
+ taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
// 1. verify execution status
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
@@ -415,11 +415,11 @@ public class PullTaskITCase extends AbstractTaskITCase {
userDn.getValues().get(0), Collections.singletonMap("title", (String) null));
// SYNCOPE-317
- execProvisioningTask(taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", 50, false);
+ execProvisioningTask(
+ taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
// 4. verify that LDAP group membership is pulled as Syncope membership
int i = 0;
- int maxit = 50;
PagedResult<UserTO> members;
do {
try {
@@ -433,8 +433,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertNotNull(members);
i++;
- } while (members.getResult().isEmpty() && i < maxit);
- if (i == maxit) {
+ } while (members.getResult().isEmpty() && i < MAX_WAIT_SECONDS);
+ if (i == MAX_WAIT_SECONDS) {
fail("Timeout while checking for memberships of " + groupTO.getName());
}
assertEquals(1, members.getResult().size());
@@ -455,10 +455,10 @@ public class PullTaskITCase extends AbstractTaskITCase {
updateLdapRemoteObject(RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD,
groupDn.getValues().get(0), Collections.singletonMap("uniquemember", "uid=admin,ou=system"));
- execProvisioningTask(taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", 50, false);
+ execProvisioningTask(
+ taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
i = 0;
- maxit = 50;
do {
try {
Thread.sleep(1000);
@@ -471,8 +471,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertNotNull(members);
i++;
- } while (!members.getResult().isEmpty() && i < maxit);
- if (i == maxit) {
+ } while (!members.getResult().isEmpty() && i < MAX_WAIT_SECONDS);
+ if (i == MAX_WAIT_SECONDS) {
fail("Timeout while checking for memberships of " + groupTO.getName());
}
assertEquals(0, members.getResult().size());
@@ -557,7 +557,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertFalse(pullTask.isPerformDelete());
// 4. pull
- execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
// 5. verify that printer was re-created in Syncope (implies that location does not start with given prefix,
// hence PrefixItemTransformer was applied during pull)
@@ -610,7 +610,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertEquals(reconFilterBuilder.getKey(), task.getReconFilterBuilder());
// 3. exec task
- ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, task.getKey(), 50, false);
+ ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
// 4. verify that only enabled user was pulled
@@ -692,7 +692,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
+ "(1041, 'syncTokenWithErrors2', 'Surname2', "
+ "false, 'syncTokenWithErrors1@syncope.apache.org', '2015-05-23 13:53:24.293')");
- ExecTO exec = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ ExecTO exec = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
resForTest = resourceService.read(resForTest.getKey());
@@ -702,7 +702,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
+ "SET email='syncTokenWithErrors2@syncope.apache.org', lastModification='2016-05-23 13:53:24.293' "
+ "WHERE ID=1041");
- exec = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ exec = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
resForTest = resourceService.read(resForTest.getKey());
@@ -754,7 +754,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
try {
// 3. execute the pull task and verify that:
- ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ ExecTO execution = execProvisioningTask(
+ taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
// 3a. user was not pulled
@@ -859,7 +860,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertFalse(actual.getTemplates().get(AnyTypeKind.USER.name()).getResources().isEmpty());
assertFalse(((UserTO) actual.getTemplates().get(AnyTypeKind.USER.name())).getMemberships().isEmpty());
- ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, actual.getKey(), 50, false);
+ ExecTO execution = execProvisioningTask(
+ taskService, TaskType.PULL, actual.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
userTO = userService.read("testuser2");
@@ -884,7 +886,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
+ "('" + id + "', 'issuesyncope230', 'Surname230', false, 'syncope230@syncope.apache.org', NULL)");
// 2. execute PullTask for resource-db-pull (table TESTPULL on external H2)
- execProvisioningTask(taskService, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", 50, false);
+ execProvisioningTask(
+ taskService, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", MAX_WAIT_SECONDS, false);
// 3. read e-mail address for user created by the PullTask first execution
UserTO userTO = userService.read("issuesyncope230");
@@ -896,7 +899,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
jdbcTemplate.execute("UPDATE TESTPULL SET email='updatedSYNCOPE230@syncope.apache.org' WHERE id='" + id + "'");
// 5. re-execute the PullTask
- execProvisioningTask(taskService, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", 50, false);
+ execProvisioningTask(
+ taskService, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", MAX_WAIT_SECONDS, false);
// 6. verify that the e-mail was updated
userTO = userService.read("issuesyncope230");
@@ -967,7 +971,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
userService.update(userPatch);
- execProvisioningTask(taskService, TaskType.PULL, task.getKey(), 50, false);
+ execProvisioningTask(taskService, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
PullTaskTO executed = taskService.read(TaskType.PULL, task.getKey(), true);
assertEquals(1, executed.getExecutions().size());
@@ -993,7 +997,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
ExecTO taskExecTO = execProvisioningTask(
- taskService, TaskType.PULL, "986867e2-993b-430e-8feb-aa9abb4c1dcd", 50, false);
+ taskService, TaskType.PULL, "986867e2-993b-430e-8feb-aa9abb4c1dcd", MAX_WAIT_SECONDS, false);
assertNotNull(taskExecTO.getStatus());
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(taskExecTO.getStatus()));
@@ -1037,7 +1041,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
taskService.update(TaskType.PULL, task);
// exec task: one user from CSV will match the user created above and template will be applied
- execProvisioningTask(taskService, TaskType.PULL, task.getKey(), 50, false);
+ execProvisioningTask(taskService, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
// check that template was successfully applied...
userTO = userService.read(userTO.getKey());
@@ -1045,8 +1049,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
// ...and that propagation to db succeeded
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
- String value = queryForObject(
- jdbcTemplate, 50, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, userTO.getKey());
+ String value = queryForObject(jdbcTemplate,
+ MAX_WAIT_SECONDS, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, userTO.getKey());
assertEquals("virtualvalue", value);
}
@@ -1062,8 +1066,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
// 2. Check that the DB resource has the correct password
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
- String value = queryForObject(
- jdbcTemplate, 50, "SELECT PASSWORD FROM test WHERE ID=?", String.class, user.getUsername());
+ String value = queryForObject(jdbcTemplate,
+ MAX_WAIT_SECONDS, "SELECT PASSWORD FROM test WHERE ID=?", String.class, user.getUsername());
assertEquals(Encryptor.getInstance().encode("security123", CipherAlgorithm.SHA1), value.toUpperCase());
// 3. Update the password in the DB
@@ -1101,7 +1105,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertEquals(actual.getKey(), pullTask.getKey());
assertEquals(actual.getJobDelegate(), pullTask.getJobDelegate());
- ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
// 5. Test the pulled user
@@ -1186,7 +1190,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
pullTask = getObject(taskResponse.getLocation(), TaskService.class, PullTaskTO.class);
assertNotNull(pullTask);
- ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ ExecTO execution = execProvisioningTask(
+ taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
// 7. Test the pulled user
@@ -1246,7 +1251,8 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertFalse(pullTask.getTemplates().isEmpty());
// 3. exec the pull task
- ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ ExecTO execution = execProvisioningTask(
+ taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
// the user is successfully pulled...
@@ -1282,7 +1288,7 @@ public class PullTaskITCase extends AbstractTaskITCase {
assertEquals("pullFromLDAP2@syncope.apache.org", connObject.getAttr("mail").get().getValues().get(0));
// 5. exec the pull task again
- execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), 50, false);
+ execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
// the internal is updated...
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java
index 6c3fed5..de6836a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java
@@ -131,7 +131,8 @@ public class PushTaskITCase extends AbstractTaskITCase {
assertFalse(groupService.read("29f96485-729e-4d31-88a1-6fc60e4677f3").
getResources().contains(RESOURCE_NAME_LDAP));
- execProvisioningTask(taskService, TaskType.PUSH, "fd905ba5-9d56-4f51-83e2-859096a67b75", 50, false);
+ execProvisioningTask(
+ taskService, TaskType.PUSH, "fd905ba5-9d56-4f51-83e2-859096a67b75", MAX_WAIT_SECONDS, false);
assertNotNull(resourceService.readConnObject(
RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), "29f96485-729e-4d31-88a1-6fc60e4677f3"));
@@ -156,7 +157,8 @@ public class PushTaskITCase extends AbstractTaskITCase {
// ------------------------------------------
// Unmatching --> Assign --> dryRuyn
// ------------------------------------------
- execProvisioningTask(taskService, TaskType.PUSH, "af558be4-9d2f-4359-bf85-a554e6e90be1", 50, true);
+ execProvisioningTask(
+ taskService, TaskType.PUSH, "af558be4-9d2f-4359-bf85-a554e6e90be1", MAX_WAIT_SECONDS, true);
assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='vivaldi'").size());
assertFalse(userService.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee").
getResources().contains(RESOURCE_NAME_TESTDB2));
@@ -167,7 +169,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
pushTaskKeys.add("97f327b6-2eff-4d35-85e8-d581baaab855");
pushTaskKeys.add("03aa2a04-4881-4573-9117-753f81b04865");
pushTaskKeys.add("5e5f7c7e-9de7-4c6a-99f1-4df1af959807");
- execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, 50, false);
+ execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
// ------------------------------------------
// Unatching --> Ignore
@@ -218,7 +220,8 @@ public class PushTaskITCase extends AbstractTaskITCase {
// ------------------------------------------
// Matching --> Deprovision --> dryRuyn
// ------------------------------------------
- execProvisioningTask(taskService, TaskType.PUSH, "c46edc3a-a18b-4af2-b707-f4a415507496", 50, true);
+ execProvisioningTask(
+ taskService, TaskType.PUSH, "c46edc3a-a18b-4af2-b707-f4a415507496", MAX_WAIT_SECONDS, true);
assertTrue(userService.read("1417acbe-cbf6-4277-9372-e75e04f97000").
getResources().contains(RESOURCE_NAME_TESTDB2));
assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='rossini'").size());
@@ -229,7 +232,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
pushTaskKeys.add("c46edc3a-a18b-4af2-b707-f4a415507496");
pushTaskKeys.add("5e5f7c7e-9de7-4c6a-99f1-4df1af959807");
- execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, 50, false);
+ execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
// ------------------------------------------
// Matching --> Deprovision && Ignore
@@ -252,7 +255,8 @@ public class PushTaskITCase extends AbstractTaskITCase {
// ------------------------------------------
// Matching --> Link
// ------------------------------------------
- execProvisioningTask(taskService, TaskType.PUSH, "51318433-cce4-4f71-8f45-9534b6c9c819", 50, false);
+ execProvisioningTask(
+ taskService, TaskType.PUSH, "51318433-cce4-4f71-8f45-9534b6c9c819", MAX_WAIT_SECONDS, false);
assertTrue(userService.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
getResources().contains(RESOURCE_NAME_TESTDB2));
assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
@@ -262,7 +266,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
pushTaskKeys.add("24b1be9c-7e3b-443a-86c9-798ebce5eaf2");
pushTaskKeys.add("375c7b7f-9e3a-4833-88c9-b7787b0a69f2");
- execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, 50, false);
+ execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
// ------------------------------------------
// Matching --> Unlink && Update
@@ -300,7 +304,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
assertNotNull(sendVivaldi);
// 3. execute push: vivaldi is found on ldap
- execProvisioningTask(taskService, TaskType.PUSH, sendVivaldi.getKey(), 50, false);
+ execProvisioningTask(taskService, TaskType.PUSH, sendVivaldi.getKey(), MAX_WAIT_SECONDS, false);
ReconStatus status = reconciliationService.status(
new ReconQuery.Builder(AnyTypeKind.USER.name(), RESOURCE_NAME_LDAP).anyKey("vivaldi").build());
@@ -318,7 +322,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
// 5. execute push again: propagation task for CREATE will be generated, but that will fail
// as task executor is not able any more to identify the entry to UPDATE
- execProvisioningTask(taskService, TaskType.PUSH, sendVivaldi.getKey(), 50, false);
+ execProvisioningTask(taskService, TaskType.PUSH, sendVivaldi.getKey(), MAX_WAIT_SECONDS, false);
status = reconciliationService.status(
new ReconQuery.Builder(AnyTypeKind.USER.name(), RESOURCE_NAME_LDAP).anyKey("vivaldi").build());
@@ -349,7 +353,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
PushTaskTO pushTask = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
assertNotNull(pushTask);
- ExecTO exec = execProvisioningTask(taskService, TaskType.PUSH, pushTask.getKey(), 50, false);
+ ExecTO exec = execProvisioningTask(taskService, TaskType.PUSH, pushTask.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
// 2. check
@@ -437,7 +441,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
assertNotNull(push);
// execute the new task
- ExecTO exec = execProvisioningTask(taskService, TaskType.PUSH, push.getKey(), 50, false);
+ ExecTO exec = execProvisioningTask(taskService, TaskType.PUSH, push.getKey(), MAX_WAIT_SECONDS, false);
assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
} finally {
groupService.delete(groupTO.getKey());
@@ -486,7 +490,7 @@ public class PushTaskITCase extends AbstractTaskITCase {
notification = getObject(responseNotification.getLocation(), NotificationService.class, NotificationTO.class);
assertNotNull(notification);
- execProvisioningTask(taskService, TaskType.PUSH, actual.getKey(), 50, false);
+ execProvisioningTask(taskService, TaskType.PUSH, actual.getKey(), MAX_WAIT_SECONDS, false);
NotificationTaskTO taskTO = findNotificationTask(notification.getKey(), 50);
assertNotNull(taskTO);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
index d8c5d27..ba579bd 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
@@ -69,7 +69,6 @@ public class ReportITCase extends AbstractITCase {
assertNotNull(exec);
int i = 0;
- int maxit = 50;
// wait for completion (executions incremented)
do {
@@ -84,8 +83,8 @@ public class ReportITCase extends AbstractITCase {
assertNotNull(reportTO.getExecutions());
i++;
- } while (preExecSize == reportTO.getExecutions().size() && i < maxit);
- if (i == maxit) {
+ } while (preExecSize == reportTO.getExecutions().size() && i < MAX_WAIT_SECONDS);
+ if (i == MAX_WAIT_SECONDS) {
fail("Timeout when executing report " + reportKey);
}
exec = reportTO.getExecutions().get(reportTO.getExecutions().size() - 1);
@@ -362,7 +361,7 @@ public class ReportITCase extends AbstractITCase {
ExecTO execution = reportService.execute(new ExecuteQuery.Builder().key(reportTO.getKey()).build());
assertNotNull(execution);
- int maxit = 50;
+ int maxit = MAX_WAIT_SECONDS;
do {
try {
Thread.sleep(1000);
@@ -393,7 +392,7 @@ public class ReportITCase extends AbstractITCase {
}
// Wait for one execution
- int maxit = 50;
+ int maxit = MAX_WAIT_SECONDS;
do {
try {
Thread.sleep(1000);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java
index 24eacad..04c4778 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java
@@ -108,7 +108,6 @@ public class SchedTaskITCase extends AbstractTaskITCase {
taskService.execute(new ExecuteQuery.Builder().key(task.getKey()).startAt(later).build());
int i = 0;
- int maxit = 50;
// wait for completion (executions incremented)
do {
@@ -123,7 +122,7 @@ public class SchedTaskITCase extends AbstractTaskITCase {
assertNotNull(task.getExecutions());
i++;
- } while (task.getExecutions().isEmpty() && i < maxit);
+ } while (task.getExecutions().isEmpty() && i < MAX_WAIT_SECONDS);
PagedResult<ExecTO> execs =
taskService.listExecutions(new ExecQuery.Builder().key(task.getKey()).build());
@@ -187,7 +186,7 @@ public class SchedTaskITCase extends AbstractTaskITCase {
taskService.actionJob(task.getKey(), JobAction.START);
- int i = 0, maxit = 50;
+ int i = 0;
do {
try {
@@ -196,9 +195,9 @@ public class SchedTaskITCase extends AbstractTaskITCase {
// ignore
}
- jobs = taskService.listJobs().stream().filter(job -> job.isRunning()).collect(Collectors.toList());
+ jobs = taskService.listJobs().stream().filter(JobTO::isRunning).collect(Collectors.toList());
i++;
- } while (jobs.size() < 1 && i < maxit);
+ } while (jobs.size() < 1 && i < MAX_WAIT_SECONDS);
assertEquals(1, jobs.size());
assertEquals(task.getKey(), jobs.get(0).getRefKey());
@@ -216,7 +215,7 @@ public class SchedTaskITCase extends AbstractTaskITCase {
jobs = taskService.listJobs().stream().filter(job -> job.isRunning()).collect(Collectors.toList());
i++;
- } while (jobs.size() >= 1 && i < maxit);
+ } while (jobs.size() >= 1 && i < MAX_WAIT_SECONDS);
assertTrue(jobs.isEmpty());
}
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
index 9d2a101..e78d26d 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
@@ -159,7 +159,7 @@ public class UserIssuesITCase extends AbstractITCase {
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
String username = queryForObject(
- jdbcTemplate, 50, "SELECT id FROM test WHERE id=?", String.class, userTO.getUsername());
+ jdbcTemplate, MAX_WAIT_SECONDS, "SELECT id FROM test WHERE id=?", String.class, userTO.getUsername());
assertEquals(userTO.getUsername(), username);
UserPatch userPatch = new UserPatch();
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java
index 2fad213..555f57c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java
@@ -323,8 +323,8 @@ public class UserSelfITCase extends AbstractITCase {
// verify propagation (including password) on external db
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
- String pwdOnResource = queryForObject(
- jdbcTemplate, 50, "SELECT password FROM test WHERE id=?", String.class, user.getUsername());
+ String pwdOnResource = queryForObject(jdbcTemplate,
+ MAX_WAIT_SECONDS, "SELECT password FROM test WHERE id=?", String.class, user.getUsername());
assertTrue(StringUtils.isNotBlank(pwdOnResource));
// 2. verify that new user is able to authenticate
@@ -377,8 +377,8 @@ public class UserSelfITCase extends AbstractITCase {
assertNull(read.getToken());
// 7. verify that password was changed on external resource
- String newPwdOnResource = queryForObject(
- jdbcTemplate, 50, "SELECT password FROM test WHERE id=?", String.class, user.getUsername());
+ String newPwdOnResource = queryForObject(jdbcTemplate,
+ MAX_WAIT_SECONDS, "SELECT password FROM test WHERE id=?", String.class, user.getUsername());
assertTrue(StringUtils.isNotBlank(newPwdOnResource));
assertNotEquals(pwdOnResource, newPwdOnResource);
}
@@ -612,8 +612,8 @@ public class UserSelfITCase extends AbstractITCase {
assertEquals("active", userTO.getStatus());
assertEquals(Collections.singleton(RESOURCE_NAME_TESTDB), userTO.getResources());
- String username = queryForObject(
- jdbcTemplate, 50, "SELECT id FROM test WHERE id=?", String.class, userTO.getUsername());
+ String username = queryForObject(jdbcTemplate,
+ MAX_WAIT_SECONDS, "SELECT id FROM test WHERE id=?", String.class, userTO.getUsername());
assertEquals(userTO.getUsername(), username);
// 6. update user
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
index f57a4ec..14e84b8 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
@@ -230,14 +230,14 @@ public class VirAttrITCase extends AbstractITCase {
// 3. update virtual attribute directly
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
- String value = queryForObject(
- jdbcTemplate, 50, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, actual.getKey());
+ String value = queryForObject(jdbcTemplate,
+ MAX_WAIT_SECONDS, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, actual.getKey());
assertEquals("virattrcache", value);
jdbcTemplate.update("UPDATE testpull set USERNAME='virattrcache2' WHERE ID=?", actual.getKey());
- value = queryForObject(
- jdbcTemplate, 50, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, actual.getKey());
+ value = queryForObject(jdbcTemplate,
+ MAX_WAIT_SECONDS, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, actual.getKey());
assertEquals("virattrcache2", value);
// 4. check for cached attribute value
@@ -388,13 +388,13 @@ public class VirAttrITCase extends AbstractITCase {
// ----------------------------------------
JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
String value = queryForObject(
- jdbcTemplate, 50, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, userTO.getKey());
+ jdbcTemplate, MAX_WAIT_SECONDS, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, userTO.getKey());
assertEquals("virattrcache", value);
jdbcTemplate.update("UPDATE testpull set USERNAME='virattrcache2' WHERE ID=?", userTO.getKey());
value = queryForObject(
- jdbcTemplate, 50, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, userTO.getKey());
+ jdbcTemplate, MAX_WAIT_SECONDS, "SELECT USERNAME FROM testpull WHERE ID=?", String.class, userTO.getKey());
assertEquals("virattrcache2", value);
// ----------------------------------------
diff --git a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc
index 6f91ed6..6a5ebc0 100644
--- a/src/main/asciidoc/reference-guide/concepts/externalresources.adoc
+++ b/src/main/asciidoc/reference-guide/concepts/externalresources.adoc
@@ -221,21 +221,6 @@ example, which leverage the `syncope:fullPath2Dn()` custom JEXL function:
* Groups: `'cn=' + name + syncope:fullPath2Dn(realm, 'ou', ',') + ',o=isp'`
====
-[[connectors-resources-history]]
-[NOTE]
-.Connector Instances and External Resources Configuration History Management
-====
-When either developing an IdM solution or managing a production deployment, it often happens to play with
-Connector Instances and / or External Resources configuration; sometimes, this results in failures which prevent
-<<provisioning,provisioning>> to work properly.
-
-In such situations it is possible to revert a Connector Instance's and / or External Resource's configuration to a
-previous working state.
-
-The maximum number of configurations to keep, for each Connector Instance and for each External Resource, is set by
-`connector.conf.history.size` and `resource.conf.history.size`: see <<configuration-parameters, below>> for details.
-====
-
==== Linked Accounts
Sometimes the information provided by the <<mapping,mapping>> is not enough to define a one-to-one correspondence
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc
index 559a9de..5aa46a5 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc
@@ -57,10 +57,6 @@ mechanism to work properly;
Suspended Users are anyway not allowed to authenticate.
* `log.lastlogindate` - whether the system updates the `lastLoginDate` field of users upon authentication;
* `return.password.value` - whether the hashed password value shall be returned when reading users;
-* `connector.conf.history.size` - how many previous configurations shall be kept for each Connector Instance,
-for usage with <<connectors-resources-history, connectors and resources configuration history management>>;
-* `resource.conf.history.size` - how many previous configurations shall be kept for each External Resource,
-for usage with <<connectors-resources-history, connectors and resources configuration history management>>;
* `connector.test.timeout` - timeout (in seconds) to check connector connection in <<Admin Console>>;
`0` to skip any check;