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

Stefan Seifert commented on SLING-10918:
----------------------------------------

hmm, i'm not sure if the test case is representing a realistic scenario.
it shows mixing two different "resource resolver types" within a single unit 
test (e.g. JCR_MOCK which is using the "real" resource resolver implementation 
and RESOURCERESOLVER_MOCK which uses a super simplified resource provider 
support which breaks in your test).

but it was never the intention to mix those two resource resolver types. if you 
need a new resource resolver withing an instance, use the 
ResourceResolverFactory OSGi service, which is tied to the resource resolver 
type with which the test was set up. then it should not be any problem.

> 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)

Reply via email to