-
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
- Configure automation rule as shown in the screenshot below:
- 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
- links to