Repository: syncope Updated Branches: refs/heads/master 2080b51c5 -> fa91567d7
Added delete all propagation tasks and bugfix on delete propagation, SYNCOPE-158 Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/fa91567d Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/fa91567d Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/fa91567d Branch: refs/heads/master Commit: fa91567d71b7e62cbb4c88a3ad9a70e2de7bd97d Parents: 2080b51 Author: massi <massimiliano.perr...@tirasa.net> Authored: Fri Dec 4 14:00:44 2015 +0100 Committer: massi <massimiliano.perr...@tirasa.net> Committed: Fri Dec 4 14:00:59 2015 +0100 ---------------------------------------------------------------------- .../client/cli/commands/task/TaskCommand.java | 4 ++ .../cli/commands/task/TaskDeleteAllProp.java | 66 ++++++++++++++++++++ .../commands/task/TaskSyncopeOperations.java | 6 +- .../cli/src/main/resources/messages.properties | 2 +- 4 files changed, 76 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/fa91567d/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java index 074e17c..903cbfc 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java @@ -58,6 +58,9 @@ public class TaskCommand extends AbstractCommand { case DELETE: new TaskDelete(input).delete(); break; + case DELETE_PROP_TASK: + new TaskDeleteAllProp(input).delete(); + break; case DELETE_EXECUTION: new TaskExecutionDelete(input).delete(); break; @@ -87,6 +90,7 @@ public class TaskCommand extends AbstractCommand { READ("--read"), READ_EXECUTION("--read-execution"), DELETE("--delete"), + DELETE_PROP_TASK("--delete-all-prop"), DELETE_EXECUTION("--delete-execution"), EXECUTE("--execute"); http://git-wip-us.apache.org/repos/asf/syncope/blob/fa91567d/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDeleteAllProp.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDeleteAllProp.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDeleteAllProp.java new file mode 100644 index 0000000..4f41428 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDeleteAllProp.java @@ -0,0 +1,66 @@ +/* + * 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.cli.commands.task; + +import javax.xml.ws.WebServiceException; +import org.apache.syncope.client.cli.Input; +import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.to.AbstractTaskTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TaskDeleteAllProp extends AbstractTaskCommand { + + private static final Logger LOG = LoggerFactory.getLogger(TaskDeleteAllProp.class); + + private static final String DELETE_HELP_MESSAGE = "task --delete-all-prop"; + + private final Input input; + + public TaskDeleteAllProp(final Input input) { + this.input = input; + } + + public void delete() { + + if (input.parameterNumber() == 0) { + for (final AbstractTaskTO taskTO : taskSyncopeOperations.listPropagationTask()) { + final String taskId = String.valueOf(taskTO.getKey()); + try { + taskSyncopeOperations.delete(taskId); + taskResultManager.deletedMessage("Task", taskId); + } catch (final WebServiceException | SyncopeClientException ex) { + LOG.error("Error deleting task", ex); + if (ex.getMessage().startsWith("NotFound")) { + taskResultManager.notFoundError("Task", taskId); + } else if (ex.getMessage().startsWith("DataIntegrityViolation")) { + taskResultManager.genericError("You cannot delete task " + taskId); + } else { + taskResultManager.genericError(ex.getMessage()); + } + } catch (final NumberFormatException ex) { + LOG.error("Error deleting task", ex); + taskResultManager.notBooleanDeletedError("task", taskId); + } + } + } else { + taskResultManager.commandOptionError(DELETE_HELP_MESSAGE); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/fa91567d/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 8937e71..8a2ec62 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 @@ -44,12 +44,16 @@ public class TaskSyncopeOperations { } public void delete(final String taskId) { - taskService.read(Long.valueOf(taskId)); + taskService.delete(Long.valueOf(taskId)); } public List<AbstractTaskTO> list(final String type) { return taskService.list(new TaskQuery.Builder().type(TaskType.valueOf(type)).build()).getResult(); } + + public List<AbstractTaskTO> listPropagationTask() { + return taskService.list(new TaskQuery.Builder().type(TaskType.PROPAGATION).build()).getResult(); + } public TaskExecTO readExecution(final String executionId) { return taskService.readExecution(Long.valueOf(executionId)); http://git-wip-us.apache.org/repos/asf/syncope/blob/fa91567d/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 4bf32ef..acd35ab 100644 --- a/client/cli/src/main/resources/messages.properties +++ b/client/cli/src/main/resources/messages.properties @@ -29,6 +29,6 @@ report.help.message=\nUsage: report [options]\n Options:\n --help \n --de resource.help.message=\nUsage: resource [options]\n Options:\n --help \n --details \n --list \n --read \n Syntax: --read {RESOURCE-NAME} {RESOURCE-NAME} [...]\n --delete \n Syntax: --delete {RESOURCE-NAME} {RESOURCE-NAME} [...]\n role.help.message=\nUsage: role [options]\n Options:\n --help \n --details \n --list \n --read \n Syntax: --read {ROLE-ID} {ROLE-ID} [...]\n --delete \n Syntax: --delete {ROLE-ID} {ROLE-ID} [...]\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 / SYNCHRONIZATION\n --list-running-jobs \n --list-scheduled-jobs \n --read \n Syntax: --read {TASK-ID} {TASK-ID} [...]\n --read-execution \n Syntax: --read-execution {TASK-EXEC-ID} {TASK-EXEC-ID} [...]\n --delete \n Syntax: --delete {TASK-ID} {TASK-ID} [...]\n --delete-execution \n Syntax: --delete-execution {TASK-EXEC-ID} {TASK-EXEC-ID} [...]\n --execute \n Syntax: --execute {TASK-ID} {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 / SYNCHRONIZATION\n --list-running-jobs \n --list-scheduled-jobs \n --read \n Syntax: --read {TASK-ID} {TASK-ID} [...]\n --read-execution \n Syntax: --read-execution {TASK-EXEC-ID} {TASK-EXEC-ID} [...]\n --delete \n Syntax: --delete {TASK-ID} {TASK-ID} [...]\n --delete-all-prop\n --delete-execution \n Syntax: --delete-execution {TASK-EXEC-ID} {TASK-EXEC-ID} [...]\n --execute \n Syntax: --execute {TASK-ID} {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-ID}\n --read-by-userid \n Syntax: --read-by-userid {USER-ID} {USER-ID} [...]\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-NAME}\n --search-by-resource \n Syntax: --search-by-resource {REALM} {RESOURCE-NAME}\n --delete \n Syntax: --delete {USER-ID} {USER-ID} [...]\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