@Override public Promise<Void> apply(@Nullable final Void input) { List<Attachment> attachments = attachmentManager.getAttachments(issue); try { for (Attachment a : attachments) { attachmentManager.deleteAttachment(a); } } catch (RemoveException e) { return Promises.rejected(new AttachmentCleanupException(e)); } return attachmentStore.deleteAttachmentContainerForIssue(issue); } });
public void delete(JiraServiceContext jiraServiceContext, Long attachmentId) { ErrorCollection errorCollection = jiraServiceContext.getErrorCollection(); ApplicationUser user = jiraServiceContext.getLoggedInUser(); Attachment attachment = getAndVerifyAttachment(attachmentId, errorCollection); if (errorCollection.hasAnyErrors()) { return; } Issue issue = getAndVerifyIssue(attachment, errorCollection); if (errorCollection.hasAnyErrors()) { return; } //attempt to delete the attachment from disk and related metadata from database try { attachmentManager.deleteAttachment(attachment); } catch (RemoveException e) { errorCollection.addErrorMessage(getText("attachment.service.error.delete.attachment.failed", attachmentId.toString())); return; } IssueUpdateBean issueUpdateBean = constructIssueUpdateBeanForAttachmentDelete(attachment, issue, user); //update issue (dispatches change event) issueUpdater.doUpdate(issueUpdateBean, true); }