...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import com.deniz.jira.versioning.subcomponents.SubcomponentsService; import com.deniz.jira.versioning.subcomponents.ComponentHierarchy; import com.onresolve.scriptrunner.runner.customisers.PluginModule; import com.onresolve.scriptrunner.runner.customisers.WithPlugin; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.component.ComponentAccessor; import com.deniz.jira.versioning.bundles.BundleService; import com.deniz.jira.versioning.CmpVersionMappingService; import com.deniz.jira.versioning.bundles.BundleNameFormatter; import com.atlassian.jira.bc.issue.comment.CommentService; import com.atlassian.jira.issue.IssueInputParametersImpl; @WithPlugin("com.deniz.jira.versioning") @PluginModule BundleService bundleService; @WithPlugin("com.deniz.jira.versioning") @PluginModule CmpVersionMappingService cmpVersionMappingService; def versionManager = ComponentAccessor.getVersionManager(); def issueService = ComponentAccessor.getIssueService(); def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(); //issue object is build in and com.atlassian.jira.issue.IssueImp def versions = issue.getAffectedVersions(); def components = issue.getComponents(); if (components.size() == 0 || versions.size() == 0) { return; //if no component or version is selected we can exit the script } //for simplicity of script, I'm assuming user is only selecting a single component and version def component = components[0]; def version = versions[0]; //version class is: com.atlassian.jira.project.version.VersionImpl def bundlesForVersion = bundleService.getBundlesForVersion(version.getId()); if (bundlesForVersion.size() == 0) { return; //this version doesn't belong to any bundle } for (bundle in bundlesForVersion) { //bundle is:com.deniz.jira.versioning.BundleImp System.out.println("Found bundle for issue:" + bundle.getBundleName()); //def bundleContent = cmpVersionMappingService.getComponentsOfBundle(bundle.getId()); //FOR VERSIONS BEFORE 1.312.0 def bundleContent = bundleService.getComponentsOfBundle(bundle.getId()); //FOR VERSION 1.312.0+ for (componentVersion in bundleContent) { // componentVersion is com.deniz.jira.bundle.BundleContentImp if (componentVersion.getComponentId() == component.getId()) { def pVersion = versionManager.getVersion(componentVersion.getVersionId()); System.out.println("pVersion:" + pVersion.getName()); def issueInputParameters = new IssueInputParametersImpl(); issueInputParameters.setAffectedVersionIds(pVersion.getId()); def validationResult = issueService.validateUpdate(user, issue.id, issueInputParameters) if (validationResult.isValid()) { issueService.update(user, validationResult) } else { log.warn validationResult.errorCollection.errors } break; } } } |
...