@Override public boolean evaluate(final IssueLinkType type) { return !type.isSystemLinkType(); } });
/** * Checks if this link's type is a System Link type. A System Link Type is a link type * that is used by JIRA to denote special relationships. For example, a sub-task is linked to its * parent issue using a link type that is a System Link Type. */ public boolean isSystemLink() { return getIssueLinkType().isSystemLinkType(); }
private List<IssueLinkType> buildIssueLinkTypes(final Collection<GenericValue> issueLinkTypeGVs, final boolean excludeSystemLinks) { final List<IssueLinkType> issueLinkTypes = new ArrayList<IssueLinkType>(issueLinkTypeGVs.size()); for (final GenericValue issueLinkTypeGV : issueLinkTypeGVs) { final IssueLinkType ilt = buildIssueLinkType(issueLinkTypeGV); if (!excludeSystemLinks || !ilt.isSystemLinkType()) { issueLinkTypes.add(ilt); } } return issueLinkTypes; }
public void changeIssueLinkType(IssueLink issueLink, IssueLinkType swapLinkType, ApplicationUser remoteUser) { final IssueLinkType oldIssueLinkType = issueLink.getIssueLinkType(); if (!oldIssueLinkType.isSystemLinkType() && swapLinkType.isSystemLinkType()) { log.warn("Changing non-system link type to a system link type."); } else if (oldIssueLinkType.isSystemLinkType() && !swapLinkType.isSystemLinkType()) { log.warn("Changing system link type to a non-system link type."); } updateIssueLinkType(issueLink, swapLinkType); outwardLinkCache.remove(issueLink.getSourceId()); inwardLinkCache.remove(issueLink.getDestinationId()); // If the link we are swapping from is not a system link type, it means its creation should have // been recorded in 'change history', so we should update change history here. if (!oldIssueLinkType.isSystemLinkType()) { createRemoveIssueLinkChangeItems(issueLink, oldIssueLinkType, remoteUser); createCreateIssueLinkChangeItems(issueLink, swapLinkType, remoteUser); } }
if (!issueLinkType.isSystemLinkType()) if (!issueLinkType.isSystemLinkType())
if (!excludeSystemLinks || !issueLinkType.isSystemLinkType()) if (!excludeSystemLinks || !issueLinkType.isSystemLinkType())
protected void doValidation() { // Validate comment and permissions super.doValidation(); if (!getLinkDescs().contains(linkDesc)) { addError("linkDesc", getText("linkjiraissue.error.link.desc.invalid")); } else if (getIssueLinkType().isSystemLinkType()) { // Check that the chosen link type is not a system link type. // This should not happen - the system should not present a user with the description // of a system link type to chose addError("linkDesc", getText("linkjiraissue.error.systemlink")); } if (issueKeys == null || issueKeys.isEmpty()) { addError("issueKeys", getText("linkjiraissue.error.issuekey.required")); } if (StringUtils.isBlank(jiraAppId)) { validateLocalLink(); } else { validateRemoteLink(); } }
if (!issueLinkType.isSystemLinkType())
if (!issueLinkType.isSystemLinkType())
private void validateLinkInput(final ApplicationUser user, ErrorCollection errors, Issue issue, IssueLinkType linkType, Collection<String> linkKeys, boolean excludeSystemLinks) { if (excludeSystemLinks && linkType.isSystemLinkType()) { errors.addErrorMessage(beanFactory.getInstance(user).getText("issuelinking.service.error.invalid.link.type", linkType.getName())); } if (linkKeys == null || linkKeys.isEmpty()) { errors.addErrorMessage(beanFactory.getInstance(user).getText("issuelinking.service.error.must.provide.issue.links")); } else { for (String linkKey : linkKeys) { if (linkKey.equalsIgnoreCase(issue.getKey())) { errors.addErrorMessage(beanFactory.getInstance(user).getText("issuelinking.service.error.self.reference", linkKey)); } MutableIssue linkedIssue = issueManager.getIssueObject(linkKey); if (linkedIssue == null) { errors.addErrorMessage(beanFactory.getInstance(user).getText("issuelinking.service.error.linked.issue.doesnt.exist", linkKey)); } // NOTE we don't validate that the link type requested does not already link the two issues because the // IssueLinkManager ignores this on creation if it already exists. } } }
else if (getIssueLinkType().isSystemLinkType())