You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Konrad Windszus (Jira)" <ji...@apache.org> on 2021/11/15 08:01:00 UTC

[jira] [Commented] (SLING-10918) NPE in RRMockResourceResolverWrapper.getResource() when mixing JCR and default RR type

    [ https://issues.apache.org/jira/browse/SLING-10918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17443614#comment-17443614 ] 

Konrad Windszus commented on SLING-10918:
-----------------------------------------

I added a failing test in https://github.com/apache/sling-org-apache-sling-testing-sling-mock/pull/6/files. The fix requires maintaining a proper ResolveContext per provider which must not return {{null}} for {{getProviderState()}} in case the ResourceProvider requires authentication.

> NPE in RRMockResourceResolverWrapper.getResource() when mixing JCR and default RR type
> --------------------------------------------------------------------------------------
>
>                 Key: SLING-10918
>                 URL: https://issues.apache.org/jira/browse/SLING-10918
>             Project: Sling
>          Issue Type: Bug
>          Components: Testing
>    Affects Versions: Testing Sling Mock 3.1.2
>            Reporter: Konrad Windszus
>            Priority: Major
>
> For the following unit test 
> {code}
> @Rule
> public final SlingContext context = new SlingContext(ResourceResolverType.JCR_MOCK);
> @Test
>     public void test() throws Exception {
>         ResourceResolver resourceResolver = MockSling.newResourceResolver(context.bundleContext());
>         MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(resourceResolver, context.bundleContext());
>         resourceResolver.getResource("/some/path");
> ....
> }
> {code}
> I ran into the following NPE
> {code}
> java.lang.NullPointerException
> 	at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.getResource(JcrResourceProvider.java:320)
> 	at org.apache.sling.testing.mock.sling.RRMockResourceResolverWrapper.getResource(RRMockResourceResolverWrapper.java:66)
> ...
> {code}
> This is caused by https://github.com/apache/sling-org-apache-sling-testing-sling-mock/blob/b642cb54b9f69c6f6649e335e0f7ae8da58183c6/core/src/main/java/org/apache/sling/testing/mock/sling/RRMockResourceResolverWrapper.java#L113 returning {{null}} (which seems fine according to the contract which states that {{null}} might be returned) and https://github.com/apache/sling-org-apache-sling-jcr-resource/blob/89bc0bb344d6c7f109f6e43ef5e87bda7c04d286/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java#L320 unconditionally dereferencing it.
> I raised https://lists.apache.org/thread/tss0dlhqss5pzhqz89brlgryb3s44gh8 to clarify whether JCR Resource Provider needs to be fixed as well.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)