diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java index 2710cfaab..ee2069adf 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemRepository.java @@ -45,13 +45,14 @@ import javax.persistence.TypedQuery; import org.libreccm.security.Shiro; import org.libreccm.security.User; -import org.libreccm.security.UserManager; import org.libreccm.security.UserRepository; +import org.libreccm.workflow.Task; +import org.libreccm.workflow.TaskManager; +import org.libreccm.workflow.TaskRepository; import org.libreccm.workflow.Workflow; +import org.libreccm.workflow.WorkflowRepository; -import java.util.ArrayList; import java.util.Collections; -import java.util.stream.Collectors; import javax.transaction.Transactional; @@ -82,12 +83,18 @@ public class ContentItemRepository @Inject private UserRepository userRepository; - @Inject - private UserManager userManager; - @Inject private RoleManager roleManager; + @Inject + private WorkflowRepository workflowRepo; + + @Inject + private TaskRepository taskRepo; + + @Inject + private TaskManager taskManager; + @Inject private PermissionChecker permissionChecker; @@ -492,6 +499,14 @@ public class ContentItemRepository removeCategoryFromItem(item, category); } + + if (draft.getWorkflow() != null) { + final Workflow workflow = draft.getWorkflow(); + for(final Task task : workflow.getTasks()) { + taskManager.removeTask(workflow, task); + } + workflowRepo.delete(workflow); + } super.delete(draft); } diff --git a/ccm-core/src/main/java/org/libreccm/workflow/TaskManager.java b/ccm-core/src/main/java/org/libreccm/workflow/TaskManager.java index 27edf3f17..99f41174c 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/TaskManager.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/TaskManager.java @@ -89,7 +89,7 @@ public class TaskManager { task.setWorkflow(null); workflowRepo.save(workflow); - taskRepo.save(task); + taskRepo.delete(task); } /**