Summary

      When hitting "<baseUrl>/rest/api/2/project/<projectKeyOrId>/permissionscheme?expand=all" in JIRA 7.4.1, it throws a java.lang.NullPointerException.
      According to REST API JIRA 7.4.1, this should work.

      Expected behavior:

      Actual Behaviour

      The following traces are thrown:

      <status>
      <status-code>500</status-code>
      <stack-trace>
      java.lang.NullPointerException at com.atlassian.jira.rest.v2.issue.scope.RequestScope.get(RequestScope.java:33)
       at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:340)
       at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
       at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:187)
       at com.sun.proxy.$Proxy680.getBaseUriBuilder(Unknown Source)
       at com.atlassian.jira.rest.v2.issue.project.ProjectRoleBeanFactoryImpl.projectRole(ProjectRoleBeanFactoryImpl.java:75)
       at com.atlassian.jira.rest.v2.issue.project.ProjectRoleBeanFactoryImpl.shortProjectRole(ProjectRoleBeanFactoryImpl.java:90)
       at com.atlassian.jira.rest.v2.admin.permissionscheme.PermissionGrantBeanExpanderImpl$3.expand(PermissionGrantBeanExpanderImpl.java:97) at com.atlassian.jira.rest.v2.admin.permissionscheme.PermissionGrantBeanExpanderImpl.expand(PermissionGrantBeanExpanderImpl.java:118) at com.atlassian.jira.rest.v2.admin.permissionscheme.PermissionSchemeBeansFactoryImpl.toBean(PermissionSchemeBeansFactoryImpl.java:90) at com.atlassian.jira.rest.v2.admin.permissionscheme.PermissionSchemeBeansFactoryImpl.lambda$toBean$0(PermissionSchemeBeansFactoryImpl.java:73) at com.google.common.collect.Iterators$8.transform(Iterators.java:799) at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48) at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:271) at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:226) at com.atlassian.jira.rest.api.permission.PermissionSchemeBean.<init>(PermissionSchemeBean.java:39) at com.atlassian.jira.rest.api.permission.PermissionSchemeBean.<init>(PermissionSchemeBean.java:12) at com.atlassian.jira.rest.api.permission.PermissionSchemeBean$Builder.build(PermissionSchemeBean.java:159) at com.atlassian.jira.rest.v2.admin.permissionscheme.PermissionSchemeBeansFactoryImpl.toBean(PermissionSchemeBeansFactoryImpl.java:76) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource$3.apply(ProjectPermissionSchemeResource.java:141) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource$3.apply(ProjectPermissionSchemeResource.java:138) at com.atlassian.fugue.Either$LeftProjection.on(Either.java:698) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource.getProjectPermissionScheme(ProjectPermissionSchemeResource.java:138) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource.access$300(ProjectPermissionSchemeResource.java:40) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource$2$1.apply(ProjectPermissionSchemeResource.java:127) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource$2$1.apply(ProjectPermissionSchemeResource.java:124) at com.atlassian.fugue.Either$LeftProjection.on(Either.java:698) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource$2.apply(ProjectPermissionSchemeResource.java:124) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource$2.apply(ProjectPermissionSchemeResource.java:119) at com.atlassian.fugue.Either$LeftProjection.on(Either.java:698) at com.atlassian.jira.rest.v2.permission.ProjectPermissionSchemeResource.getAssignedPermissionScheme(ProjectPermissionSchemeResource.java:119) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:192) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:83) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:53) at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:34) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:53) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:110) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:190) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) 
      at ..
      </stack-trace>
      </status>
      

      Note

      This seems to work in JIRA 7.5.0

      Workaround

      Don't use expand all, but use combination of desired expand values
      I.e. any of "permissions,user,group,projectRole,field,all"
      E.g. https://jira.atlassian.com/rest/api/2/project/JRA/permissionscheme?expand=field

            [JSWSERVER-16386] REST API for Permission Scheme Throws a NullPointerException

            Version 8.20.12 are affected.

            Alexander Gribukov added a comment - Version 8.20.12 are affected.

            Jan Wagner added a comment -

            Version 7.13.5 and 7.13.8 are affected as well, moreover using expand=projectRole will trigger the issue as well

             

            Jan Wagner added a comment - Version 7.13.5 and 7.13.8 are affected as well, moreover using expand=projectRole will trigger the issue as well  

            Hi,

            I've reproduced this in on jira.atlassian.com running 7.8.0, so I'm adding 7.8.0 as an affected version.
            https://jira.atlassian.com/rest/api/2/project/JRASERVER/permissionscheme?expand=all

            Thank you for reporting the issue.

            Cheers,
            Ignat Alexeyenko
            Jira Bugmaster.

            Ignat (Inactive) added a comment - Hi, I've reproduced this in on jira.atlassian.com running 7.8.0, so I'm adding 7.8.0 as an affected version. https://jira.atlassian.com/rest/api/2/project/JRASERVER/permissionscheme?expand=all Thank you for reporting the issue. Cheers, Ignat Alexeyenko Jira Bugmaster.

              Unassigned Unassigned
              acardino Anna Cardino (Inactive)
              Affected customers:
              3 This affects my team
              Watchers:
              7 Start watching this issue

                Created:
                Updated: