I am trying to create a new version only if a specific project has the same versions of the current issue. Here it is made in the following code block:
for( Version v: issue.getFixVersions()){
if(newIssueproject.getVersions().contains(v)){
Version mynewVersion= ComponentAccessor.versionManager.createVersion(v.getName()+"-Inbox", startDate, releaseDate, description, newIssueproject.id, scheduleAfterVersion, released)
mynewVersions.add(mynewVersion)
}
The problem is that if(newIssueproject.getVersions().contains(v)) always returns false although it should be true sometimes. As a result, I always have versions that are null. So how can this be fixed?
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def authenticationContext = ComponentAccessor.jiraAuthenticationContext
def issueFactory = ComponentAccessor.getIssueFactory()
def issueManager = ComponentAccessor.getIssueManager()
def userManager = ComponentAccessor.getUserUtil()
def currentUserObj = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
long issueLinkType= 10070 as long
long sequence =1 as long
long newissueTypeID= 19 as long
long myissueID= issue.getId() as long
// the key of the project under which the version will get created
final String projectKey = "SF"
// the start date - optional
final Date startDate = null
// the release date - optional
final Date releaseDate = null
// a description for the new version - optional
final String description = null
// id of the version to schedule after the given version object - optional
final Long scheduleAfterVersion = null
// true if this is a released version
final boolean released = false
def project = ComponentAccessor.projectManager.getProjectObjByKey(projectKey)
assert project : "Could not find project with key $projectKey"
def projectComponentManager = ComponentAccessor.getProjectComponentManager()
int counter=0
for(ProjectComponent component: componentList){
MutableIssue newissue= ComponentAccessor.issueFactory.getIssue()
//set values
newissue.setProjectObject(issue.projectObject)
newissue.setIssueTypeId("19")
newissue.setSummary("MOUNA CAMELIA")
newissue.setDescription("MOUNA CAMELIA")
newissue.reporter = issue.getReporter()
String componentName= component.getName()
log.warn("MOUNA CAMELIA HELLO 5 "+component)
def shortenedComponentName = componentName.substring(componentName.indexOf("-")+1)
def projectName = componentName.substring(0, componentName.indexOf("-"))
log.warn("MOUNA CAMELIA HELLO 6 projectName--"+projectName+"--" )
def newIssueproject = ComponentAccessor.projectManager.getProjectObjByKey(projectName)
newissue.setProjectObject(newIssueproject)
log.warn("MOUNA CAMELIA ISSUE GET VERSIONS "+newIssueproject.getVersions()+"-========= "+issue.getFixVersions())
def mynewVersions = new ArrayList <Version> ()
for( Version v: issue.getFixVersions()){
if(newIssueproject.getVersions().contains(v)){
Version mynewVersion= ComponentAccessor.versionManager.createVersion(v.getName()+"-Inbox", startDate, releaseDate, description, newIssueproject.id, scheduleAfterVersion, released)
mynewVersions.add(mynewVersion)
}
}
newissue.setFixVersions(mynewVersions)
In Java, the Collection.contains() method relies on the equals() method of the item's class. It can lead to false results if the equality is not implemented correctly.
In this case, I think that the Version class does not implement equals() as you would expect.
Maybe you could just implement your own equality based on the ID.
When I use the ID, the result of the condition is always null, it seems that it is not possible for a project and an issue to have the same version ID so I ended up using the name instead, is this OK? It seems that it is impossible for a project and an issue to have the same versions IDs. I have tried many inputs and it is never working.
Here is my new code:
log.warn("MOUNA CAMELIA ISSUE GET VERSIONS "+newIssueproject.getVersions()+"-========= ")
List<String> newIssueProjectVersionIDs= new ArrayList<String>()
for(Version myver: newIssueproject.getVersions()){
newIssueProjectVersionIDs.add(myver.getName())
}
log.warn("MOUNA CAMELIA newIssueProjectVersionIDs "+newIssueProjectVersionIDs+"-========= ")
def mynewVersions = new ArrayList <Version> ()
for( Version v: issue.getFixVersions()){
log.warn("MOUNA CAMELIA VERSION V "+v.getName())
if(newIssueProjectVersionIDs.contains(v.getName())){
Version mynewVersion= ComponentAccessor.versionManager.createVersion(v.getName()+"-Inbox", startDate, releaseDate, description, newIssueproject.id, scheduleAfterVersion, released)
mynewVersions.add(mynewVersion)
log.warn("MOUNA CAMELIA TRUE")
}else{
log.warn("MOUNA CAMELIA FALSE")
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.