[SYNCOPE-1262] Remove matrix parameters - OpenApi wins :-(
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/eb1cd3ff Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/eb1cd3ff Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/eb1cd3ff Branch: refs/heads/master Commit: eb1cd3ff22d099c3c4978f56d104433f5bc23f31 Parents: b0b0e32 Author: Francesco Chicchiriccò <ilgro...@apache.org> Authored: Tue Feb 13 17:01:43 2018 +0100 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Tue Feb 13 17:01:43 2018 +0100 ---------------------------------------------------------------------- .../client/cli/commands/policy/PolicyRead.java | 40 ++++---- .../policy/PolicySyncopeOperations.java | 6 +- .../client/cli/commands/task/TaskRead.java | 41 +++++---- .../commands/task/TaskSyncopeOperations.java | 6 +- .../cli/src/main/resources/messages.properties | 4 +- .../policies/AccountPolicyDirectoryPanel.java | 3 +- .../policies/PasswordPolicyDirectoryPanel.java | 2 +- .../console/policies/PolicyDirectoryPanel.java | 12 +-- .../policies/PolicyModalPanelBuilder.java | 12 ++- .../policies/PolicyRuleDirectoryPanel.java | 11 ++- .../policies/PolicyRuleWizardBuilder.java | 4 +- .../policies/PullPolicyDirectoryPanel.java | 2 +- .../console/policies/PullPolicyModalPanel.java | 3 +- .../client/console/rest/PolicyRestClient.java | 16 ++-- .../client/console/rest/TaskRestClient.java | 20 ++-- .../tasks/NotificationTaskDirectoryPanel.java | 2 +- .../tasks/PropagationTaskDirectoryPanel.java | 2 +- .../tasks/ProvisioningTaskDirectoryPanel.java | 4 +- .../console/tasks/PullTaskDirectoryPanel.java | 3 +- .../console/tasks/PushTaskDirectoryPanel.java | 2 +- .../console/tasks/SchedTaskDirectoryPanel.java | 15 ++- .../console/tasks/SchedTaskWizardBuilder.java | 10 +- .../client/console/tasks/SchedTasks.java | 3 +- .../client/console/widgets/JobWidget.java | 23 +++-- .../syncope/common/rest/api/beans/AnyQuery.java | 3 +- .../common/rest/api/beans/TaskQuery.java | 4 +- .../common/rest/api/service/PolicyService.java | 23 +++-- .../common/rest/api/service/TaskService.java | 20 ++-- .../apache/syncope/core/logic/PolicyLogic.java | 73 +++++++++------ .../apache/syncope/core/logic/TaskLogic.java | 32 ++++++- .../api/dao/ExternalResourceDAO.java | 2 +- .../core/persistence/api/dao/PolicyDAO.java | 4 +- .../core/persistence/api/dao/RealmDAO.java | 2 +- .../core/persistence/api/entity/Policy.java | 26 ------ .../api/entity/policy/AccountPolicy.java | 1 - .../api/entity/policy/PasswordPolicy.java | 1 - .../persistence/api/entity/policy/Policy.java | 28 ++++++ .../api/entity/policy/PolicyUtils.java | 28 ++++++ .../api/entity/policy/PolicyUtilsFactory.java | 33 +++++++ .../api/entity/policy/PullPolicy.java | 1 - .../api/entity/policy/PushPolicy.java | 1 - .../jpa/dao/JPAExternalResourceDAO.java | 2 +- .../core/persistence/jpa/dao/JPAPolicyDAO.java | 2 +- .../core/persistence/jpa/dao/JPARealmDAO.java | 2 +- .../jpa/entity/policy/AbstractPolicy.java | 2 +- .../jpa/entity/policy/JPAPolicyUtils.java | 60 ++++++++++++ .../entity/policy/JPAPolicyUtilsFactory.java | 82 +++++++++++++++++ .../entity/EntityValidationListener.java | 2 +- .../core/persistence/jpa/inner/PolicyTest.java | 2 +- .../provisioning/api/data/PolicyDataBinder.java | 2 +- .../java/data/PolicyDataBinderImpl.java | 4 +- .../java/data/RealmDataBinderImpl.java | 2 +- .../rest/cxf/service/PolicyServiceImpl.java | 16 ++-- .../core/rest/cxf/service/TaskServiceImpl.java | 25 +++-- ext/swagger-ui/pom.xml | 24 +---- .../core/reference/ITImplementationLookup.java | 3 +- .../org/apache/syncope/fit/AbstractITCase.java | 5 +- .../org/apache/syncope/fit/cli/CLIITCase.java | 21 ----- .../syncope/fit/core/AbstractTaskITCase.java | 31 ++++--- .../apache/syncope/fit/core/GroupITCase.java | 3 +- .../fit/core/IdentityRecertificationITCase.java | 3 +- .../syncope/fit/core/ImplementationITCase.java | 9 +- .../syncope/fit/core/MembershipITCase.java | 10 +- .../syncope/fit/core/MultitenancyITCase.java | 7 +- .../fit/core/NotificationTaskITCase.java | 18 ++-- .../apache/syncope/fit/core/PolicyITCase.java | 26 +++--- .../syncope/fit/core/PropagationTaskITCase.java | 6 +- .../apache/syncope/fit/core/PullTaskITCase.java | 96 ++++++++++---------- .../apache/syncope/fit/core/PushTaskITCase.java | 32 +++---- .../apache/syncope/fit/core/RealmITCase.java | 5 +- .../syncope/fit/core/SchedTaskITCase.java | 18 ++-- .../apache/syncope/fit/core/SwaggerITCase.java | 64 ------------- .../org/apache/syncope/fit/core/UserITCase.java | 15 +-- .../syncope/fit/core/UserIssuesITCase.java | 5 +- 74 files changed, 670 insertions(+), 462 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java index 5b50a69..26ee655 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicyRead.java @@ -19,11 +19,14 @@ package org.apache.syncope.client.cli.commands.policy; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.xml.ws.WebServiceException; import org.apache.syncope.client.cli.Input; +import org.apache.syncope.client.cli.util.CommandUtils; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.policy.PolicyTO; +import org.apache.syncope.common.lib.types.PolicyType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,7 +34,8 @@ public class PolicyRead extends AbstractPolicyCommand { private static final Logger LOG = LoggerFactory.getLogger(PolicyRead.class); - private static final String READ_HELP_MESSAGE = "policy --read {POLICY-KEY} {POLICY-KEY} [...]"; + private static final String READ_HELP_MESSAGE = "policy --read {POLICY-TYPE} {POLICY-KEY}\n" + + " Policy type: ACCOUNT / PASSWORD / PULL / PUSH"; private final Input input; @@ -40,24 +44,26 @@ public class PolicyRead extends AbstractPolicyCommand { } public void read() { - if (input.parameterNumber() >= 1) { - final List<PolicyTO> policyTOs = new ArrayList<>(); - for (final String parameter : input.getParameters()) { - try { - policyTOs.add(policySyncopeOperations.read(parameter)); - } catch (final NumberFormatException ex) { - LOG.error("Error reading policy", ex); - policyResultManager.notBooleanDeletedError("policy", parameter); - } catch (final WebServiceException | SyncopeClientException ex) { - LOG.error("Error reading policy", ex); - if (ex.getMessage().startsWith("NotFound")) { - policyResultManager.notFoundError("Policy", parameter); - } else { - policyResultManager.genericError(ex.getMessage()); - } + if (input.parameterNumber() >= 2) { + final String[] parameters = Arrays.copyOfRange(input.getParameters(), 1, input.parameterNumber()); + try { + final List<PolicyTO> policyTOs = new ArrayList<>(); + for (final String parameter : parameters) { + policyTOs.add(policySyncopeOperations.read(input.firstParameter(), parameter)); } + policyResultManager.printPolicies(policyTOs); + } catch (final SyncopeClientException | WebServiceException ex) { + LOG.error("Error reading policy", ex); + if (ex.getMessage().startsWith("NotFound")) { + policyResultManager.notFoundError("Policy", parameters[0]); + } else { + policyResultManager.genericError(ex.getMessage()); + } + } catch (final IllegalArgumentException ex) { + LOG.error("Error reading policy", ex); + policyResultManager.typeNotValidError( + "policy", input.firstParameter(), CommandUtils.fromEnumToArray(PolicyType.class)); } - policyResultManager.printPolicies(policyTOs); } else { policyResultManager.commandOptionError(READ_HELP_MESSAGE); } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java index 9bfad75..f738ad9 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java @@ -28,8 +28,8 @@ public class PolicySyncopeOperations { private final PolicyService policyService = SyncopeServices.get(PolicyService.class); - public <T extends PolicyTO> T read(final String policyKey) { - return policyService.read(policyKey); + public <T extends PolicyTO> T read(final String type, final String policyKey) { + return policyService.read(PolicyType.valueOf(type), policyKey); } public <T extends PolicyTO> List<T> list(final String policyType) { @@ -37,6 +37,6 @@ public class PolicySyncopeOperations { } public void delete(final String policyKey) { - policyService.delete(policyKey); + policyService.delete(null, policyKey); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java index 0c05681..be5221a 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskRead.java @@ -19,11 +19,14 @@ package org.apache.syncope.client.cli.commands.task; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.xml.ws.WebServiceException; import org.apache.syncope.client.cli.Input; +import org.apache.syncope.client.cli.util.CommandUtils; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.TaskTO; +import org.apache.syncope.common.lib.types.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,7 +34,8 @@ public class TaskRead extends AbstractTaskCommand { private static final Logger LOG = LoggerFactory.getLogger(TaskRead.class); - private static final String READ_HELP_MESSAGE = "task --read {TASK-KEY} {TASK-KEY} [...]"; + private static final String READ_HELP_MESSAGE = "task --read {TASK-TYPE} {TASK-KEY}\n" + + " Task type: PROPAGATION / NOTIFICATION / SCHEDULED / PULL / PUSH"; private final Input input; @@ -40,25 +44,26 @@ public class TaskRead extends AbstractTaskCommand { } public void read() { - if (input.parameterNumber() >= 1) { - final List<TaskTO> taskTOs = new ArrayList<>(); - for (final String parameter : input.getParameters()) { - try { - taskTOs.add(taskSyncopeOperations.read(parameter)); - } catch (final NumberFormatException ex) { - LOG.error("Error reading task", ex); - taskResultManager.notBooleanDeletedError("task", parameter); - } catch (final SyncopeClientException | WebServiceException ex) { - LOG.error("Error reading task", ex); - if (ex.getMessage().startsWith("NotFound")) { - taskResultManager.notFoundError("Task", parameter); - } else { - taskResultManager.genericError(ex.getMessage()); - } - break; + if (input.parameterNumber() >= 2) { + final String[] parameters = Arrays.copyOfRange(input.getParameters(), 1, input.parameterNumber()); + try { + final List<TaskTO> taskTOs = new ArrayList<>(); + for (final String parameter : parameters) { + taskTOs.add(taskSyncopeOperations.read(input.firstParameter(), parameter)); } + taskResultManager.printTasks(taskTOs); + } catch (final SyncopeClientException | WebServiceException ex) { + LOG.error("Error reading task", ex); + if (ex.getMessage().startsWith("NotFound")) { + taskResultManager.notFoundError("Task", parameters[0]); + } else { + taskResultManager.genericError(ex.getMessage()); + } + } catch (final IllegalArgumentException ex) { + LOG.error("Error reading task", ex); + taskResultManager.typeNotValidError( + "task", input.firstParameter(), CommandUtils.fromEnumToArray(TaskType.class)); } - taskResultManager.printTasks(taskTOs); } else { taskResultManager.commandOptionError(READ_HELP_MESSAGE); } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java index ad94a4f..48fd7c6 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java @@ -36,12 +36,12 @@ public class TaskSyncopeOperations { return taskService.listJobs(); } - public <T extends TaskTO> T read(final String taskKey) { - return taskService.read(taskKey, true); + public <T extends TaskTO> T read(final String type, final String taskKey) { + return taskService.read(TaskType.valueOf(type), taskKey, true); } public void delete(final String taskKey) { - taskService.delete(taskKey); + taskService.delete(null, taskKey); } public List<TaskTO> list(final String type) { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/cli/src/main/resources/messages.properties ---------------------------------------------------------------------- diff --git a/client/cli/src/main/resources/messages.properties b/client/cli/src/main/resources/messages.properties index 0e47a36..48cdc15 100644 --- a/client/cli/src/main/resources/messages.properties +++ b/client/cli/src/main/resources/messages.properties @@ -22,14 +22,14 @@ entitlement.help.message=\nUsage: entitlement [options]\n Options:\n --help group.help.message=\nUsage: group [options]\n Options:\n --help \n --details \n --list \n --read \n Syntax: --read {GROUP-KEY} {GROUP-KEY} [...]\n --read-attr-by-schema-type {GROUP-KEY} {SCHEMA-TYPE}\n Schema type: PLAIN / DERIVED / VIRTUAL\n --read-attr-by-schema {GROUP-KEY} {SCHEMA-TYPE} {SCHEMA-KEY}\n Schema type: PLAIN / DERIVED / VIRTUAL\n --delete \n Syntax: --delete {GROUP-KEY} {GROUP-KEY} [...]\n logger.help.message=\nUsage: logger [options]\n Options:\n --help \n --details \n --list \n --read \n Syntax: --read {LOG-NAME} {LOG-NAME} [...]\n --update \n Syntax: --update {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]\n --update-all \n Syntax: --update-all {LOG-LEVEL} \n --create \n Syntax: --create {LOG-NAME}={LOG-LEVEL} {LOG-NAME}={LOG-LEVEL} [...]\n --delete \n Syntax: --delete {LOG-NAME} {LOG-NAME} [...]\n notification.help.message=\nUsage: notification [options]\n Options:\n --help \n --list \n --read \n Syntax: --read {NOTIFICATION-KEY} \n --delete \n Syntax: --delete {NOTIFICATION-KEY}\n -policy.help.message=\nUsage: policy [options]\n Options:\n --help \n --details \n --list \n Syntax: --list-policy {POLICY-TYPE} \n Policy type: ACCOUNT / PASSWORD / PULL / PUSH\n --read \n Syntax: --read {POLICY-KEY} {POLICY-KEY} [...]\n --delete \n Syntax: --delete {POLICY-KEY} {POLICY-KEY} [...]\n +policy.help.message=\nUsage: policy [options]\n Options:\n --help \n --details \n --list \n Syntax: --list-policy {POLICY-TYPE} \n Policy type: ACCOUNT / PASSWORD / PULL / PUSH\n --read \n Syntax: --read {POLICY-TYPE} {POLICY-KEY}\n Policy type: ACCOUNT / PASSWORD / PULL / PUSH\n --delete \n Syntax: --delete {POLICY-KEY} {POLICY-KEY} [...]\n question.help.message=\nUsage: question [options]\n Options:\n --help \n --list \n --read \n Syntax: --read {QUESTION-KEY} {QUESTION-KEY} [...]\n --delete \n Syntax: --delete {QUESTION-KEY} {QUESTION-KEY} [...]\n realm.help.message=\nUsage: realm [options]\n Options:\n --help \n --details \n --list \n report.help.message=\nUsage: report [options]\n Options:\n --help \n --details\n --list \n --list-jobs \n --read \n Syntax: --read {REPORT-KEY} {REPORT-KEY} [...] \n --delete \n Syntax: --delete {REPORT-KEY} {REPORT-KEY} [...]\n --execute \n Syntax: --execute {REPORT-KEY} \n --delete-execution \n Syntax: --delete-execution {EXECUTION-KEY} {EXECUTION-KEY} [...]\n --export-execution-result \n Syntax: --export-execution-result {EXECUTION-KEY} {EXECUTION-KEY} [...] {FORMAT}\n Format: CSV / HTML / PDF / XML / RTF\n resource.help.message=\nUsage: resource [options]\n Options:\n --help \n --details \n --list \n --read \n Syntax: --read {RESOURCE-KEY} {RESOURCE-KEY} [...]\n --delete \n Syntax: --delete {RESOURCE-KEY} {RESOURCE-KEY} [...]\n role.help.message=\nUsage: role [options]\n Options:\n --help \n --details \n --list \n --read \n Syntax: --read {ROLE-KEY} {ROLE-KEY} [...]\n --delete \n Syntax: --delete {ROLE-KEY} {ROLE-KEY} [...]\n schema.help.message=\nUsage: schema [options]\n Options:\n --help \n --details \n --list-all\n --list-plain\n --list-derived\n --list-virtual\n --read {SCHEMA-TYPE} {SCHEMA-KEY}\n Schema type: PLAIN / DERIVED / VIRTUAL\n --delete {SCHEMA-TYPE} {SCHEMA-KEY}\n Schema type: PLAIN / DERIVED / VIRTUAL\n -task.help.message=\nUsage: task [options]\n Options:\n --help \n --details\n --list\n Syntax: --list {TASK-TYPE} \n Task type: NOTIFICATION / PROPAGATION / PUSH / SCHEDULED / PULL\n --list-running-jobs \n --list-scheduled-jobs \n --read \n Syntax: --read {TASK-KEY} {TASK-KEY} [...]\n --delete \n Syntax: --delete {TASK-KEY} {TASK-KEY} [...]\n --delete-all-prop\n --delete-execution \n Syntax: --delete-execution {TASK-EXEC-KEY} {TASK-EXEC-KEY} [...]\n --execute \n Syntax: --execute {TASK-KEY} {DRY-RUN}\n Dry run: true / false\n +task.help.message=\nUsage: task [options]\n Options:\n --help \n --details\n --list\n Syntax: --list {TASK-TYPE} \n Task type: NOTIFICATION / PROPAGATION / PUSH / SCHEDULED / PULL\n --list-running-jobs \n --list-scheduled-jobs \n --read \n Syntax: --read {TASK-TYPE} {TASK-KEY}\n Task type: PROPAGATION / NOTIFICATION / SCHEDULED / PULL / PUSH\n --delete \n Syntax: --delete {TASK-KEY} {TASK-KEY} [...]\n --delete-all-prop\n --delete-execution \n Syntax: --delete-execution {TASK-EXEC-KEY} {TASK-EXEC-KEY} [...]\n --execute \n Syntax: --execute {TASK-KEY} {DRY-RUN}\n Dry run: true / false\n user.help.message=\nUsage: user [options]\n Options:\n --help \n --details \n --list \n --get-user-key\n Syntax: --get-user-key {USERNAME}\n --get-username\n Syntax: --get-username {USER-KEY}\n --read-by-userkey \n Syntax: --read-by-userkey {USER-KEY} {USER-KEY} [...]\n --read-by-username\n Syntax: --read-by-username {USERNAME} {USERNAME} [...]\n --search-by-attribute \n Syntax: --search-by-attribute {REALM} {ATTR-NAME}={ATTR-VALUE}\n --search-by-role \n Syntax: --search-by-role {REALM} {ROLE-KEY}\n --search-by-resource \n Syntax: --search-by-resource {REALM} {RESOURCE-KEY}\n --delete \n Syntax: --delete {USER-KEY} {USER-KEY} [...]\n --delete-all \n Syntax: --delete-all {REALM}\n --delete-by-attribute \n Syntax: --delete-by-attribute {REALM} {ATTR-NAME}={ATTR-VALUE}\n workflow.help.message=\nUsage: workflow [options]\n Options:\n --help \n --export-diagram {ANY-TYPE-KIND}\n Any type kind: ANY_OBJECT / USER / GROUP\n --export-definition {ANY-TYPE-KIND}\n Any type kind: ANY_OBJECT / USER / GROUP\n migrate.help.message=\nUsage: migrate [options]\n Options:\n --help \n --conf {SRC} {DST}\n Syncope 1.2.X content.xml SRC absolute path\n Syncope 2.0.X *Content.xml DST absolute path\n http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java index dd89ea1..a51acaa 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java @@ -45,7 +45,8 @@ public class AccountPolicyDirectoryPanel extends PolicyDirectoryPanel<AccountPol public AccountPolicyDirectoryPanel(final String id, final PageReference pageRef) { super(id, PolicyType.ACCOUNT, pageRef); - this.addNewItemPanelBuilder(new PolicyModalPanelBuilder<>(new AccountPolicyTO(), modal, pageRef), true); + this.addNewItemPanelBuilder(new PolicyModalPanelBuilder<>( + PolicyType.ACCOUNT, new AccountPolicyTO(), modal, pageRef), true); MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.POLICY_CREATE); initResultTable(); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java index 32fce97..3aa8be4 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java @@ -45,7 +45,7 @@ public class PasswordPolicyDirectoryPanel extends PolicyDirectoryPanel<PasswordP super(id, PolicyType.PASSWORD, pageRef); this.addNewItemPanelBuilder( - new PolicyModalPanelBuilder<>(new PasswordPolicyTO(), modal, pageRef), true); + new PolicyModalPanelBuilder<>(PolicyType.PASSWORD, new PasswordPolicyTO(), modal, pageRef), true); MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.POLICY_CREATE); initResultTable(); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java index d4b41f6..ab029ef 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java @@ -79,11 +79,11 @@ public abstract class PolicyDirectoryPanel<T extends PolicyTO> protected final BaseModal<T> policySpecModal = new BaseModal<>("outer"); - private final PolicyType policyType; + private final PolicyType type; public PolicyDirectoryPanel(final String id, final PolicyType policyType, final PageReference pageRef) { super(id, pageRef, true); - this.policyType = policyType; + this.type = policyType; this.restClient = new PolicyRestClient(); ruleCompositionModal.size(Modal.Size.Large); @@ -143,7 +143,7 @@ public abstract class PolicyDirectoryPanel<T extends PolicyTO> public void onClick(final AjaxRequestTarget target, final PolicyTO ignore) { send(PolicyDirectoryPanel.this, Broadcast.EXACT, new AjaxWizard.EditItemActionEvent<>( - restClient.getPolicy(model.getObject().getKey()), target)); + restClient.getPolicy(type, model.getObject().getKey()), target)); } }, ActionLink.ActionType.EDIT, StandardEntitlement.POLICY_UPDATE); @@ -170,7 +170,7 @@ public abstract class PolicyDirectoryPanel<T extends PolicyTO> public void onClick(final AjaxRequestTarget target, final PolicyTO ignore) { final T policyTO = model.getObject(); try { - restClient.delete(policyTO.getKey()); + restClient.delete(type, policyTO.getKey()); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); } catch (SyncopeClientException e) { @@ -221,14 +221,14 @@ public abstract class PolicyDirectoryPanel<T extends PolicyTO> @Override public Iterator<T> iterator(final long first, final long count) { - List<T> list = restClient.getPolicies(policyType); + List<T> list = restClient.getPolicies(type); Collections.sort(list, comparator); return list.subList((int) first, (int) first + (int) count).iterator(); } @Override public long size() { - return restClient.getPolicies(policyType).size(); + return restClient.getPolicies(type).size(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java index 75ddd09..0eac09c 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java @@ -46,6 +46,7 @@ import org.apache.syncope.common.lib.policy.PasswordPolicyTO; import org.apache.syncope.common.lib.policy.PullPolicyTO; import org.apache.syncope.common.lib.to.EntityTO; import org.apache.syncope.common.lib.types.ConflictResolutionAction; +import org.apache.syncope.common.lib.types.PolicyType; import org.apache.wicket.Component; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -62,10 +63,15 @@ public class PolicyModalPanelBuilder<T extends PolicyTO> extends AbstractModalPa private final BaseModal<T> modal; + private final PolicyType type; + private final PolicyRestClient restClient = new PolicyRestClient(); - public PolicyModalPanelBuilder(final T policyTO, final BaseModal<T> modal, final PageReference pageRef) { + public PolicyModalPanelBuilder( + final PolicyType type, final T policyTO, final BaseModal<T> modal, final PageReference pageRef) { + super(policyTO, pageRef); + this.type = type; this.modal = modal; } @@ -156,9 +162,9 @@ public class PolicyModalPanelBuilder<T extends PolicyTO> extends AbstractModalPa public void onSubmit(final AjaxRequestTarget target, final Form<?> form) { try { if (policyTO.getKey() == null) { - restClient.createPolicy(policyTO); + restClient.createPolicy(type, policyTO); } else { - restClient.updatePolicy(policyTO); + restClient.updatePolicy(type, policyTO); } SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); Profile.this.modal.close(target); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java ---------------------------------------------------------------------- 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 6d0bfd5..150c359 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 @@ -80,6 +80,8 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel private final BaseModal<T> baseModal; + private final PolicyType type; + private final String policy; protected PolicyRuleDirectoryPanel( @@ -89,6 +91,7 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel disableCheckBoxes(); this.baseModal = baseModal; + this.type = type; this.policy = policy; this.restClient = new PolicyRestClient(); @@ -157,10 +160,10 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel public void onClick(final AjaxRequestTarget target, final PolicyRuleWrapper ignore) { RuleConf rule = model.getObject().getConf(); try { - T actual = restClient.getPolicy(policy); + T actual = restClient.getPolicy(type, policy); if (actual instanceof ComposablePolicy) { ((ComposablePolicy) actual).getRules().remove(model.getObject().getImplementationKey()); - restClient.updatePolicy(actual); + restClient.updatePolicy(type, actual); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); customActionOnFinishCallback(target); @@ -251,7 +254,7 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel @Override public Iterator<PolicyRuleWrapper> iterator(final long first, final long count) { - final T actual = restClient.getPolicy(policy); + final T actual = restClient.getPolicy(type, policy); List<PolicyRuleWrapper> rules = actual instanceof ComposablePolicy ? getPolicyRuleWrappers((ComposablePolicy) actual) @@ -263,7 +266,7 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel @Override public long size() { - final T actual = restClient.getPolicy(policy); + final T actual = restClient.getPolicy(type, policy); return actual instanceof ComposablePolicy ? getPolicyRuleWrappers((ComposablePolicy) actual).size() : 0; http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java ---------------------------------------------------------------------- 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 baf2c51..eb93982 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 @@ -73,7 +73,7 @@ public class PolicyRuleWizardBuilder extends AjaxWizardBuilder<PolicyRuleWrapper @Override protected Serializable onApplyInternal(final PolicyRuleWrapper modelObject) { - PolicyTO policyTO = restClient.getPolicy(policy); + PolicyTO policyTO = restClient.getPolicy(type, policy); ComposablePolicy composable; if (policyTO instanceof ComposablePolicy) { @@ -96,7 +96,7 @@ public class PolicyRuleWizardBuilder extends AjaxWizardBuilder<PolicyRuleWrapper composable.getRules().add(modelObject.getImplementationKey()); } - restClient.updatePolicy(policyTO); + restClient.updatePolicy(type, policyTO); return modelObject; } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java index 735aa24..e0c49a4 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java @@ -46,7 +46,7 @@ public class PullPolicyDirectoryPanel extends PolicyDirectoryPanel<PullPolicyTO> final PullPolicyTO defaultItem = new PullPolicyTO(); this.addNewItemPanelBuilder( - new PolicyModalPanelBuilder<>(defaultItem, modal, pageRef), true); + new PolicyModalPanelBuilder<>(PolicyType.PULL, defaultItem, modal, pageRef), true); MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.POLICY_CREATE); initResultTable(); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyModalPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyModalPanel.java index 23a2283..b265caf 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyModalPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyModalPanel.java @@ -47,6 +47,7 @@ import org.apache.syncope.common.lib.to.ImplementationTO; import org.apache.syncope.common.lib.types.AnyTypeKind; 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.syncope.common.lib.types.SchemaType; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -146,7 +147,7 @@ public class PullPolicyModalPanel extends AbstractModalPanel<PullPolicyTO> { } } }); - restClient.updatePolicy(getItem()); + restClient.updatePolicy(PolicyType.PULL, getItem()); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); this.modal.close(target); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/rest/PolicyRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/PolicyRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/PolicyRestClient.java index 6b0619e..c6446c8 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/PolicyRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/PolicyRestClient.java @@ -34,10 +34,10 @@ public class PolicyRestClient extends BaseRestClient { private static final long serialVersionUID = -1392090291817187902L; - public <T extends PolicyTO> T getPolicy(final String key) { + public <T extends PolicyTO> T getPolicy(final PolicyType type, final String key) { T policy = null; try { - policy = getService(PolicyService.class).read(key); + policy = getService(PolicyService.class).read(type, key); } catch (Exception e) { LOG.warn("No policy found for id {}", key, e); } @@ -58,16 +58,16 @@ public class PolicyRestClient extends BaseRestClient { return res; } - public <T extends PolicyTO> void createPolicy(final T policy) { - getService(PolicyService.class).create(policy); + public <T extends PolicyTO> void createPolicy(final PolicyType type, final T policy) { + getService(PolicyService.class).create(type, policy); } - public <T extends PolicyTO> void updatePolicy(final T policy) { - getService(PolicyService.class).update(policy); + public <T extends PolicyTO> void updatePolicy(final PolicyType type, final T policy) { + getService(PolicyService.class).update(type, policy); } - public void delete(final String key) { - getService(PolicyService.class).delete(key); + public void delete(final PolicyType type, final String key) { + getService(PolicyService.class).delete(type, key); } private class PolicyComparator implements Comparator<PolicyTO>, Serializable { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java index ced4689..d184085 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java @@ -183,19 +183,19 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien } public PropagationTaskTO readPropagationTask(final String taskKey) { - return getService(TaskService.class).read(taskKey, false); + return getService(TaskService.class).read(TaskType.PROPAGATION, taskKey, false); } public NotificationTaskTO readNotificationTask(final String taskKey) { - return getService(TaskService.class).read(taskKey, false); + return getService(TaskService.class).read(TaskType.NOTIFICATION, taskKey, false); } - public <T extends SchedTaskTO> T readSchedTask(final Class<T> reference, final String taskKey) { - return getService(TaskService.class).read(taskKey, false); + public <T extends TaskTO> T readTask(final TaskType type, final String taskKey) { + return getService(TaskService.class).read(type, taskKey, false); } - public void delete(final String taskKey, final Class<? extends TaskTO> taskToClass) { - getService(TaskService.class).delete(taskKey); + public void delete(final TaskType type, final String taskKey) { + getService(TaskService.class).delete(type, taskKey); } @Override @@ -218,12 +218,12 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien return getService(TaskService.class).listRecentExecutions(max); } - public void create(final SchedTaskTO taskTO) { - getService(TaskService.class).create(taskTO); + public void create(final TaskType type, final SchedTaskTO taskTO) { + getService(TaskService.class).create(type, taskTO); } - public void update(final SchedTaskTO taskTO) { - getService(TaskService.class).update(taskTO); + public void update(final TaskType type, final SchedTaskTO taskTO) { + getService(TaskService.class).update(type, taskTO); } public BulkActionResult bulkAction(final BulkAction action) { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java index 5cd47c7..a0bc61f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java @@ -160,7 +160,7 @@ public abstract class NotificationTaskDirectoryPanel @Override public void onClick(final AjaxRequestTarget target, final NotificationTaskTO modelObject) { try { - restClient.delete(taskTO.getKey(), NotificationTaskTO.class); + restClient.delete(TaskType.NOTIFICATION, taskTO.getKey()); updateResultTable(target); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java index ba3b122..ae30e66 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java @@ -167,7 +167,7 @@ public abstract class PropagationTaskDirectoryPanel @Override public void onClick(final AjaxRequestTarget target, final PropagationTaskTO modelObject) { try { - restClient.delete(taskTO.getKey(), PropagationTaskTO.class); + restClient.delete(TaskType.PROPAGATION, taskTO.getKey()); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); PropagationTaskDirectoryPanel.this.getTogglePanel().close(target); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java index 2ae10aa..07c2ef3 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java @@ -51,10 +51,12 @@ public abstract class ProvisioningTaskDirectoryPanel<T extends ProvisioningTaskT protected ProvisioningTaskDirectoryPanel( final BaseModal<?> baseModal, final MultilevelPanel multiLevelPanelRef, + final TaskType taskType, final Class<T> reference, final String resource, final PageReference pageRef) { - super(baseModal, multiLevelPanelRef, reference, pageRef); + + super(baseModal, multiLevelPanelRef, taskType, reference, pageRef); this.resource = resource; this.schedTaskTO.setResource(resource); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/PullTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PullTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PullTaskDirectoryPanel.java index 9af1251..a0329d8 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PullTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PullTaskDirectoryPanel.java @@ -39,7 +39,8 @@ public abstract class PullTaskDirectoryPanel extends ProvisioningTaskDirectoryPa final MultilevelPanel multiLevelPanelRef, final String resource, final PageReference pageRef) { - super(baseModal, multiLevelPanelRef, PullTaskTO.class, resource, pageRef); + + super(baseModal, multiLevelPanelRef, TaskType.PULL, PullTaskTO.class, resource, pageRef); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskDirectoryPanel.java index 440b0e2..ac2dd0b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PushTaskDirectoryPanel.java @@ -37,7 +37,7 @@ public abstract class PushTaskDirectoryPanel extends ProvisioningTaskDirectoryPa final MultilevelPanel multiLevelPanelRef, final String resource, final PageReference pageRef) { - super(baseModal, multiLevelPanelRef, PushTaskTO.class, resource, pageRef); + super(baseModal, multiLevelPanelRef, TaskType.PUSH, PushTaskTO.class, resource, pageRef); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java index 5135193..824b778 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java @@ -72,6 +72,8 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> private static final long serialVersionUID = 4984337552918213290L; + protected TaskType taskType; + protected final Class<T> reference; protected T schedTaskTO; @@ -83,9 +85,12 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> protected SchedTaskDirectoryPanel( final BaseModal<?> baseModal, final MultilevelPanel multiLevelPanelRef, + final TaskType taskType, final Class<T> reference, final PageReference pageRef) { + super(baseModal, multiLevelPanelRef, pageRef); + this.taskType = taskType; this.reference = reference; try { @@ -94,7 +99,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> LOG.error("Falure instantiating task", e); } - this.addNewItemPanelBuilder(new SchedTaskWizardBuilder<>(schedTaskTO, pageRef), true); + this.addNewItemPanelBuilder(new SchedTaskWizardBuilder<>(taskType, schedTaskTO, pageRef), true); MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.TASK_CREATE); @@ -115,7 +120,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> final TemplatableTO targetObject, final String type, final AnyTO anyTO) { targetObject.getTemplates().put(type, anyTO); - new TaskRestClient().update(SchedTaskTO.class.cast(targetObject)); + new TaskRestClient().update(taskType, SchedTaskTO.class.cast(targetObject)); return targetObject; } }; @@ -203,7 +208,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> SchedTaskDirectoryPanel.this.getTogglePanel().close(target); send(SchedTaskDirectoryPanel.this, Broadcast.EXACT, new AjaxWizard.EditItemActionEvent<>( - restClient.readSchedTask(reference, model.getObject().getKey()), + restClient.readTask(taskType, model.getObject().getKey()), target).setResourceModel( new StringResourceModel("inner.task.edit", SchedTaskDirectoryPanel.this, @@ -252,7 +257,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> @Override public void onClick(final AjaxRequestTarget target, final T ignore) { try { - restClient.delete(taskTO.getKey(), reference); + restClient.delete(taskType, taskTO.getKey()); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); SchedTaskDirectoryPanel.this.getTogglePanel().close(target); @@ -287,7 +292,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO> @Override protected SchedTasksProvider<T> dataProvider() { - return new SchedTasksProvider<>(reference, TaskType.SCHEDULED, rows); + return new SchedTasksProvider<>(reference, taskType, rows); } protected class SchedTasksProvider<T extends SchedTaskTO> extends TaskDataProvider<T> { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java index ef58d82..8efd140 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java @@ -42,6 +42,7 @@ import org.apache.syncope.common.lib.to.RealmTO; import org.apache.syncope.common.lib.types.ImplementationType; import org.apache.syncope.common.lib.types.MatchingRule; import org.apache.syncope.common.lib.types.PullMode; +import org.apache.syncope.common.lib.types.TaskType; import org.apache.syncope.common.lib.types.UnmatchingRule; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -61,6 +62,8 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends AjaxWizardBui private final ImplementationRestClient implRestClient = new ImplementationRestClient(); + private final TaskType type; + private PushTaskWrapper wrapper; private CrontabPanel crontabPanel; @@ -79,8 +82,9 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends AjaxWizardBui } }; - public SchedTaskWizardBuilder(final T taskTO, final PageReference pageRef) { + public SchedTaskWizardBuilder(final TaskType type, final T taskTO, final PageReference pageRef) { super(taskTO, pageRef); + this.type = type; } @Override @@ -91,9 +95,9 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends AjaxWizardBui modelObject.setCronExpression(crontabPanel.getCronExpression()); if (modelObject.getKey() == null) { - taskRestClient.create(modelObject); + taskRestClient.create(type, modelObject); } else { - taskRestClient.update(modelObject); + taskRestClient.update(type, modelObject); } return modelObject; } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTasks.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTasks.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTasks.java index d0e8907..562d632 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTasks.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTasks.java @@ -23,6 +23,7 @@ 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.SchedTaskTO; +import org.apache.syncope.common.lib.types.TaskType; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.model.Model; @@ -39,7 +40,7 @@ public class SchedTasks extends AbstractTasks { add(mlp); mlp.setFirstLevel(new SchedTaskDirectoryPanel<SchedTaskTO>( - baseModal, mlp, SchedTaskTO.class, pageReference) { + baseModal, mlp, TaskType.SCHEDULED, SchedTaskTO.class, pageReference) { private static final long serialVersionUID = -2195387360323687302L; http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java index ba77916..5e4a9d5 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java @@ -53,9 +53,10 @@ import org.apache.syncope.common.lib.to.ExecTO; import org.apache.syncope.common.lib.to.JobTO; import org.apache.syncope.common.lib.to.ReportTO; import org.apache.syncope.common.lib.to.ProvisioningTaskTO; -import org.apache.syncope.common.lib.to.SchedTaskTO; +import org.apache.syncope.common.lib.to.PullTaskTO; import org.apache.syncope.common.lib.types.JobType; import org.apache.syncope.common.lib.types.StandardEntitlement; +import org.apache.syncope.common.lib.types.TaskType; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy; @@ -352,8 +353,7 @@ public class JobWidget extends BaseWidget { final IModel<JobTO> rowModel) { JobTO jobTO = rowModel.getObject(); - JobActionPanel panel = - new JobActionPanel(componentId, jobTO, JobWidget.this, pageRef); + JobActionPanel panel = new JobActionPanel(componentId, jobTO, JobWidget.this, pageRef); MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE, String.format("%s,%s%s,%s", StandardEntitlement.TASK_EXECUTE, @@ -405,11 +405,18 @@ public class JobWidget extends BaseWidget { break; case TASK: - ProvisioningTaskTO schedTaskTO = new TaskRestClient(). - readSchedTask(ProvisioningTaskTO.class, jobTO.getRefKey()); - - SchedTaskWizardBuilder<SchedTaskTO> swb = - new SchedTaskWizardBuilder<>(schedTaskTO, pageRef); + ProvisioningTaskTO schedTaskTO; + try { + schedTaskTO = new TaskRestClient().readTask(TaskType.PULL, jobTO.getRefKey()); + } catch (Exception e) { + LOG.debug("Failed to read {} as {}, attempting {}", + jobTO.getRefKey(), TaskType.PULL, TaskType.PUSH, e); + schedTaskTO = new TaskRestClient().readTask(TaskType.PUSH, jobTO.getRefKey()); + } + + SchedTaskWizardBuilder<ProvisioningTaskTO> swb = + new SchedTaskWizardBuilder<>(schedTaskTO instanceof PullTaskTO + ? TaskType.PULL : TaskType.PUSH, schedTaskTO, pageRef); swb.setEventSink(AvailableJobsPanel.this); target.add(jobModal.setContent(swb.build(BaseModal.CONTENT_ID, AjaxWizard.Mode.EDIT))); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java ---------------------------------------------------------------------- diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java index 1ce1233..aad9157 100644 --- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java +++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/AnyQuery.java @@ -19,7 +19,6 @@ package org.apache.syncope.common.rest.api.beans; import javax.ws.rs.DefaultValue; -import javax.ws.rs.MatrixParam; import javax.ws.rs.QueryParam; import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.rest.api.service.JAXRSService; @@ -63,7 +62,7 @@ public class AnyQuery extends AbstractQuery { } @DefaultValue(SyncopeConstants.ROOT_REALM) - @MatrixParam("realm") + @QueryParam("realm") public void setRealm(final String realm) { this.realm = realm; } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java ---------------------------------------------------------------------- diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java index dc74d26..c96d7b2 100644 --- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java +++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java @@ -21,7 +21,7 @@ package org.apache.syncope.common.rest.api.beans; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.ws.rs.DefaultValue; -import javax.ws.rs.MatrixParam; +import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.syncope.common.lib.types.TaskType; @@ -86,7 +86,7 @@ public class TaskQuery extends AbstractQuery { } @NotNull - @MatrixParam("type") + @PathParam("type") public void setType(final TaskType type) { this.type = type; } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java ---------------------------------------------------------------------- diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java index 25c3993..40e65ac 100644 --- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java +++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java @@ -26,7 +26,6 @@ import javax.validation.constraints.NotNull; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; -import javax.ws.rs.MatrixParam; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; @@ -50,14 +49,15 @@ public interface PolicyService extends JAXRSService { /** * Returns the policy matching the given key. * + * @param type policy type * @param key key of requested policy * @param <T> response type (extending PolicyTO) * @return policy with matching id */ @GET - @Path("{key}") + @Path("{type}/{key}") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - <T extends PolicyTO> T read(@NotNull @PathParam("key") String key); + <T extends PolicyTO> T read(@NotNull @PathParam("type") PolicyType type, @NotNull @PathParam("key") String key); /** * Returns a list of policies of the matching type. @@ -67,41 +67,46 @@ public interface PolicyService extends JAXRSService { * @return list of policies with matching type */ @GET + @Path("{type}") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - <T extends PolicyTO> List<T> list(@NotNull @MatrixParam("type") PolicyType type); + <T extends PolicyTO> List<T> list(@NotNull @PathParam("type") PolicyType type); /** * Create a new policy. * + * @param type policy type * @param policyTO Policy to be created (needs to match type) * @return Response object featuring Location header of created policy */ @POST + @Path("{type}") @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - Response create(@NotNull PolicyTO policyTO); + Response create(@NotNull @PathParam("type") PolicyType type, @NotNull PolicyTO policyTO); /** * Updates policy matching the given key. * + * @param type policy type * @param policyTO Policy to replace existing policy * @return an empty response if operation was successful */ @PUT - @Path("{key}") + @Path("{type}/{key}") @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - Response update(@NotNull PolicyTO policyTO); + Response update(@NotNull @PathParam("type") PolicyType type, @NotNull PolicyTO policyTO); /** * Delete policy matching the given key. * + * @param type policy type * @param key key of policy to be deleted * @return an empty response if operation was successful */ @DELETE - @Path("{key}") + @Path("{type}/{key}") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - Response delete(@NotNull @PathParam("key") String key); + Response delete(@NotNull @PathParam("type") PolicyType type, @NotNull @PathParam("key") String key); } http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java ---------------------------------------------------------------------- diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java index ab2990c..c46dec0 100644 --- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java +++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java @@ -40,6 +40,7 @@ import org.apache.syncope.common.lib.to.BulkAction; import org.apache.syncope.common.lib.to.BulkActionResult; import org.apache.syncope.common.lib.to.PagedResult; import org.apache.syncope.common.lib.to.SchedTaskTO; +import org.apache.syncope.common.lib.types.TaskType; import org.apache.syncope.common.rest.api.beans.TaskQuery; /** @@ -55,15 +56,17 @@ public interface TaskService extends ExecutableService { /** * Returns the task matching the given key. * + * @param type task type * @param key key of task to be read * @param details whether include executions or not, defaults to true * @param <T> type of taskTO * @return task with matching id */ @GET - @Path("{key}") + @Path("{type}/{key}") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) <T extends TaskTO> T read( + @NotNull @PathParam("type") TaskType type, @NotNull @PathParam("key") String key, @QueryParam(JAXRSService.PARAM_DETAILS) @DefaultValue("true") boolean details); @@ -75,40 +78,45 @@ public interface TaskService extends ExecutableService { * @return paged list of existing tasks matching the given query */ @GET + @Path("{type}") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) <T extends TaskTO> PagedResult<T> list(@BeanParam TaskQuery query); /** * Creates a new task. * + * @param type task type * @param taskTO task to be created * @return Response object featuring Location header of created task */ @POST + @Path("{type}") @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - Response create(@NotNull SchedTaskTO taskTO); + Response create(@NotNull @PathParam("type") TaskType type, @NotNull SchedTaskTO taskTO); /** * Updates the task matching the provided key. * + * @param type task type * @param taskTO updated task to be stored * @return an empty response if operation was successful */ @PUT - @Path("{key}") + @Path("{type}/{key}") @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - Response update(@NotNull TaskTO taskTO); + Response update(@NotNull @PathParam("type") TaskType type, @NotNull SchedTaskTO taskTO); /** * Deletes the task matching the provided key. * + * @param type task type * @param key key of task to be deleted * @return an empty response if operation was successful */ @DELETE - @Path("{key}") + @Path("{type}/{key}") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - Response delete(@NotNull @PathParam("key") String key); + Response delete(@NotNull @PathParam("type") TaskType type, @NotNull @PathParam("key") String key); /** * Executes the provided bulk action. http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java index c03b6bf..2506a90 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java @@ -22,16 +22,16 @@ import java.lang.reflect.Method; import java.util.List; import java.util.stream.Collectors; import org.apache.commons.lang3.ArrayUtils; +import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.policy.PolicyTO; +import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.lib.types.PolicyType; import org.apache.syncope.common.lib.types.StandardEntitlement; 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.entity.policy.AccountPolicy; -import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy; -import org.apache.syncope.core.persistence.api.entity.Policy; -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.policy.Policy; +import org.apache.syncope.core.persistence.api.entity.policy.PolicyUtils; +import org.apache.syncope.core.persistence.api.entity.policy.PolicyUtilsFactory; import org.apache.syncope.core.provisioning.api.data.PolicyDataBinder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -46,61 +46,78 @@ public class PolicyLogic extends AbstractTransactionalLogic<PolicyTO> { @Autowired private PolicyDataBinder binder; + @Autowired + private PolicyUtilsFactory policyUtilsFactory; + @PreAuthorize("hasRole('" + StandardEntitlement.POLICY_CREATE + "')") - public <T extends PolicyTO> T create(final T policyTO) { + public <T extends PolicyTO> T create(final PolicyType type, final T policyTO) { + PolicyUtils policyUtils = policyUtilsFactory.getInstance(policyTO); + if (policyUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); + throw sce; + } + return binder.getPolicyTO(policyDAO.save(binder.create(policyTO))); } @PreAuthorize("hasRole('" + StandardEntitlement.POLICY_UPDATE + "')") - public PolicyTO update(final PolicyTO policyTO) { + public PolicyTO update(final PolicyType type, final PolicyTO policyTO) { Policy policy = policyDAO.find(policyTO.getKey()); - return binder.getPolicyTO(policyDAO.save(binder.update(policy, policyTO))); - } - - private Class<? extends Policy> getPolicyClass(final PolicyType policyType) { - switch (policyType) { - case ACCOUNT: - return AccountPolicy.class; - - case PASSWORD: - return PasswordPolicy.class; - case PULL: - return PullPolicy.class; - - case PUSH: - default: - return PushPolicy.class; + PolicyUtils policyUtils = policyUtilsFactory.getInstance(policy); + if (policyUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); + throw sce; } + + return binder.getPolicyTO(policyDAO.save(binder.update(policy, policyTO))); } @PreAuthorize("hasRole('" + StandardEntitlement.POLICY_LIST + "')") public <T extends PolicyTO> List<T> list(final PolicyType type) { - return policyDAO.find(getPolicyClass(type)).stream(). + PolicyUtils policyUtils = policyUtilsFactory.getInstance(type); + + return policyDAO.find(policyUtils.policyClass()).stream(). <T>map(policy -> binder.getPolicyTO(policy)).collect(Collectors.toList()); } @PreAuthorize("hasRole('" + StandardEntitlement.POLICY_READ + "')") - public <T extends PolicyTO> T read(final String key) { + public <T extends PolicyTO> T read(final PolicyType type, final String key) { Policy policy = policyDAO.find(key); if (policy == null) { throw new NotFoundException("Policy " + key + " not found"); } + PolicyUtils policyUtils = policyUtilsFactory.getInstance(policy); + if (type != null && policyUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); + throw sce; + } + return binder.getPolicyTO(policy); } @PreAuthorize("hasRole('" + StandardEntitlement.POLICY_DELETE + "')") - public <T extends PolicyTO> T delete(final String key) { + public <T extends PolicyTO> T delete(final PolicyType type, final String key) { Policy policy = policyDAO.find(key); if (policy == null) { throw new NotFoundException("Policy " + key + " not found"); } - T policyToDelete = binder.getPolicyTO(policy); + PolicyUtils policyUtils = policyUtilsFactory.getInstance(policy); + if (type != null && policyUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); + throw sce; + } + + T deleted = binder.getPolicyTO(policy); policyDAO.delete(policy); - return policyToDelete; + return deleted; } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java index 018c3f7..a9ac3d3 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java @@ -94,8 +94,13 @@ public class TaskLogic extends AbstractExecutableLogic<TaskTO> { private TaskUtilsFactory taskUtilsFactory; @PreAuthorize("hasRole('" + StandardEntitlement.TASK_CREATE + "')") - public <T extends SchedTaskTO> T createSchedTask(final T taskTO) { + public <T extends SchedTaskTO> T createSchedTask(final TaskType type, final T taskTO) { TaskUtils taskUtils = taskUtilsFactory.getInstance(taskTO); + if (taskUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + taskUtils.getType()); + throw sce; + } SchedTask task = binder.createSchedTask(taskTO, taskUtils); task = taskDAO.save(task); @@ -117,13 +122,18 @@ public class TaskLogic extends AbstractExecutableLogic<TaskTO> { } @PreAuthorize("hasRole('" + StandardEntitlement.TASK_UPDATE + "')") - public <T extends SchedTaskTO> T updateSchedTask(final SchedTaskTO taskTO) { + public <T extends SchedTaskTO> T updateSchedTask(final TaskType type, final SchedTaskTO taskTO) { SchedTask task = taskDAO.find(taskTO.getKey()); if (task == null) { throw new NotFoundException("Task " + taskTO.getKey()); } TaskUtils taskUtils = taskUtilsFactory.getInstance(task); + if (taskUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + taskUtils.getType()); + throw sce; + } binder.updateSchedTask(task, taskTO, taskUtils); task = taskDAO.save(task); @@ -180,11 +190,19 @@ public class TaskLogic extends AbstractExecutableLogic<TaskTO> { } @PreAuthorize("hasRole('" + StandardEntitlement.TASK_READ + "')") - public <T extends TaskTO> T read(final String key, final boolean details) { + public <T extends TaskTO> T read(final TaskType type, final String key, final boolean details) { Task task = taskDAO.find(key); if (task == null) { throw new NotFoundException("Task " + key); } + + TaskUtils taskUtils = taskUtilsFactory.getInstance(task); + if (type != null && taskUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + taskUtils.getType()); + throw sce; + } + return binder.getTaskTO(task, taskUtilsFactory.getInstance(task), details); } @@ -261,12 +279,18 @@ public class TaskLogic extends AbstractExecutableLogic<TaskTO> { } @PreAuthorize("hasRole('" + StandardEntitlement.TASK_DELETE + "')") - public <T extends TaskTO> T delete(final String key) { + public <T extends TaskTO> T delete(final TaskType type, final String key) { Task task = taskDAO.find(key); if (task == null) { throw new NotFoundException("Task " + key); } + TaskUtils taskUtils = taskUtilsFactory.getInstance(task); + if (type != null && taskUtils.getType() != type) { + SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); + sce.getElements().add("Found " + type + ", expected " + taskUtils.getType()); + throw sce; + } T taskToDelete = binder.getTaskTO(task, taskUtils, true); http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java index ea1ceb8..ecde5f1 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ExternalResourceDAO.java @@ -21,7 +21,7 @@ package org.apache.syncope.core.persistence.api.dao; import java.util.List; import org.apache.syncope.core.persistence.api.entity.AnyTypeClass; import org.apache.syncope.core.persistence.api.entity.Implementation; -import org.apache.syncope.core.persistence.api.entity.Policy; +import org.apache.syncope.core.persistence.api.entity.policy.Policy; import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource; import org.apache.syncope.core.persistence.api.entity.resource.MappingItem; import org.apache.syncope.core.persistence.api.entity.resource.Provision; http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java index 456850c..e841a3c 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/PolicyDAO.java @@ -20,11 +20,11 @@ package org.apache.syncope.core.persistence.api.dao; import java.util.List; import org.apache.syncope.core.persistence.api.entity.Implementation; -import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource; -import org.apache.syncope.core.persistence.api.entity.Policy; import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy; import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy; +import org.apache.syncope.core.persistence.api.entity.policy.Policy; import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy; +import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource; public interface PolicyDAO extends DAO<Policy> { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java index c838338..42ba819 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RealmDAO.java @@ -21,8 +21,8 @@ package org.apache.syncope.core.persistence.api.dao; import java.util.List; import java.util.regex.Pattern; import org.apache.syncope.core.persistence.api.entity.Implementation; -import org.apache.syncope.core.persistence.api.entity.Policy; import org.apache.syncope.core.persistence.api.entity.Realm; +import org.apache.syncope.core.persistence.api.entity.policy.Policy; import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource; public interface RealmDAO extends DAO<Realm> { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java deleted file mode 100644 index 85fc90e..0000000 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Policy.java +++ /dev/null @@ -1,26 +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; - -public interface Policy extends Entity { - - String getDescription(); - - void setDescription(String description); -} http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/AccountPolicy.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/AccountPolicy.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/AccountPolicy.java index 3fe3c5e..af09b39 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/AccountPolicy.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/AccountPolicy.java @@ -21,7 +21,6 @@ package org.apache.syncope.core.persistence.api.entity.policy; import java.util.List; import java.util.Set; import org.apache.syncope.core.persistence.api.entity.Implementation; -import org.apache.syncope.core.persistence.api.entity.Policy; import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource; public interface AccountPolicy extends Policy { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/PasswordPolicy.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/PasswordPolicy.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/PasswordPolicy.java index e44eba0..e6575df 100644 --- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/PasswordPolicy.java +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/PasswordPolicy.java @@ -20,7 +20,6 @@ package org.apache.syncope.core.persistence.api.entity.policy; import java.util.List; import org.apache.syncope.core.persistence.api.entity.Implementation; -import org.apache.syncope.core.persistence.api.entity.Policy; public interface PasswordPolicy extends Policy { http://git-wip-us.apache.org/repos/asf/syncope/blob/eb1cd3ff/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/Policy.java ---------------------------------------------------------------------- diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/Policy.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/Policy.java new file mode 100644 index 0000000..b152221 --- /dev/null +++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/policy/Policy.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.core.persistence.api.entity.policy; + +import org.apache.syncope.core.persistence.api.entity.Entity; + +public interface Policy extends Entity { + + String getDescription(); + + void setDescription(String description); +}