User in project role condition results in NullPointerException if Actor does not have project administration privileges

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Low
    • None
    • Affects Version/s: 7.1.7
    • Component/s: Conditions
    • Minor
    • 2

      Issue Summary

      User in project role condition results in NullPointerException if actor is not an Admin user

      Steps to Reproduce

      1. Configure automation rule as shown in the screenshot below:
      2. Make sure the actor of the rule is not defined as a project administrator in the project's permissions

      Expected Results

      Rule is either executed successfully or a helpful permission error is returned

      Actual Results

      The exception below is thrown in the atlassian-jira.log file:

      2020-07-01 20:22:09,873 http-nio-8802-exec-6 ERROR user123 1222x7195x1 1qbpjh 0:0:0:0:0:0:0:1 /rest/cb-automation/latest/project/10700/rule/35/execute/AUTO-23 [c.c.a.api.service.ComponentChainImpl] Unexpected runtime error executing component for config 'ComponentConfigBean{id='414', component=CONDITION, parentId='null', conditionParentId='null', schemaVersion=4, type='jira.user.condition', value=UserConditionConfig{conditions=[UserConditionCheck{field='reporter', check=NOT_IN_ROLE, criteria=[SimpleValue{type=NAME, value='Administrators', additional='null'}]}], operator=AND}, conditions=[], children=[], optimisedIds=[]}': 
      java.lang.NullPointerException
      	at com.codebarrel.jira.role.NativeRoleClient.lambda$getUsers$1(NativeRoleClient.java:56)
      	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
      	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
      	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
      	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1553)
      	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
      	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
      	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
      	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
      	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
      	at com.codebarrel.jira.role.NativeRoleClient.getUsers(NativeRoleClient.java:60)
      	at com.codebarrel.jira.role.NativeRoleClient.getUserAccountIds(NativeRoleClient.java:67)
      	at com.codebarrel.automation.rulecomponent.jira.condition.user.UserCondition.lambda$getUsersInRoles$16(UserCondition.java:288)
      	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
      	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
      	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
      	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
      	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
      	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
      	at com.codebarrel.automation.rulecomponent.jira.condition.user.UserCondition.getUsersInRoles(UserCondition.java:295)
      	at com.codebarrel.automation.rulecomponent.jira.condition.user.UserCondition.checkUser(UserCondition.java:241)
      	at com.codebarrel.automation.rulecomponent.jira.condition.user.UserCondition.lambda$toUserCriteriaPredicate$3(UserCondition.java:151)
      	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
      	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
      	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
      	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
      	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
      	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
      	at com.codebarrel.automation.rulecomponent.jira.condition.ConditionIssueMatcher.matchIssues(ConditionIssueMatcher.java:29)
      	at com.codebarrel.automation.rulecomponent.jira.condition.user.UserCondition.executeWithIssues(UserCondition.java:82)
      	at com.codebarrel.automation.api.component.executor.IssueRequiredExecutor.execute(IssueRequiredExecutor.java:34)
      	at com.codebarrel.automation.api.component.executor.IssueRequiredExecutor.execute(IssueRequiredExecutor.java:17)
      	at com.codebarrel.automation.api.service.ComponentChainImpl.doExecute(ComponentChainImpl.java:75)
      	at com.codebarrel.automation.api.service.SingleRuleExecutorServiceImpl.execute(SingleRuleExecutorServiceImpl.java:224)
      	at com.codebarrel.jira.plugin.automation.service.execution.JiraAutomationExecutionService.runRule(JiraAutomationExecutionService.java:68)
      	at com.codebarrel.jira.plugin.automation.service.execution.JiraAutomationExecutionService.lambda$processEventWithRule$0(JiraAutomationExecutionService.java:45)
      	at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.lambda$executeAs$0(JiraThreadLocalExecutor.java:37)
      	at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.executeAsWithResult(JiraThreadLocalExecutor.java:67)
      	at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.executeAsWithResult(JiraThreadLocalExecutor.java:53)
      	at com.codebarrel.jira.plugin.automation.service.execution.JiraThreadLocalExecutor.executeAs(JiraThreadLocalExecutor.java:36)
      

      Workaround

      Ensure the user defined as the Actor is defined as a project administrator for the projects the automation is valid for

            Assignee:
            Unassigned
            Reporter:
            Taiwo Akindele (Inactive)
            Votes:
            13 Vote for this issue
            Watchers:
            16 Start watching this issue

              Created:
              Updated: