Search code examples
objectvariablesgroovyscopescriptrunner-for-jira

Find an object with an attribute value within a collection of objects in groovy


I have a collection of type ProjectComponent, I am using the following code to find an object in my collection with a specific name. Here is the code:

 if(newIssueproject.getComponents().stream().anyMatch { it.getName().equals(shortenedComponentName)  }){
                        newComponent=it
   }

I am receiving the error Script function failed on Automation for Jira rule: UpdateExecutionSummary , file: SuperFeature/rest_superFeatureGenerator.groovy, error: groovy.lang.MissingPropertyException: No such property: it for class: SuperFeature.rest_superFeatureGenerator

But I have looked up tutorials and the it should work automatically even if it is not declared as you can see here:

enter image description here


Solution

  • I think the first use of it should work fine. This is probably fine:

    newIssueproject.getComponents().stream().anyMatch { 
       it.getName().equals(shortenedComponentName)  
    })
    

    The second one is not defined.

    if(newIssueproject.getComponents().stream().anyMatch { it.getName().equals(shortenedComponentName)  }){
        newComponent=it   // it's me.  I'm the problem it's me.
    }
    

    If you want to grab the component you're after I might do this:

    newIssueProject.components.stream()
        .findFirst { it.name == shortedComponentName }
        .ifPresent { component ->
           // do something with it
        }