Your resource is already resolved, so you should rather create a resource
wrapper and return that

Carsten

2014-10-08 15:51 GMT+02:00 Sandro Boehme <[email protected]>:

> The problem might be related to SLING-2780 [1]. But I still don't know how
> to get around it.
>
> [1] - https://issues.apache.org/jira/browse/SLING-2780
>
> Best,
>
> Sandro
>
> Am 08.10.14 15:40, schrieb Sandro Boehme:
>
>  Hello,
>>
>> when I call a resource using my custom ResourceProvider [1] I get a
>> server error (500) saying "java.lang.UnsupportedOperationException:
>> JcrNodeResourceMetadata is locked" [3]. At the moment I don't see a way
>> to get around that and it would be great if someone has a hint on what
>> to do.
>>
>> In my ResEditorResourceProvider.java:61 [1] I return a resource that I
>> get from a ResourceResolver. While resolving, the
>> 'ResourceDecoratorTracker.decorate(Resource)' method
>> 'result.getResourceMetadata().lock()' is called and after I returned my
>> resource 'ResourceResolverImpl.getAbsoluteResourceInternal(String path,
>> boolean isResolve)' calls
>> 'resource.getResourceMetadata().setResolutionPath(path)' which triggers
>> the exception. You can see that in the stack trace [3].
>>
>> ++ Background ++
>> I'm working on a custom ResourceProvider [1] for the Sling Resource
>> Editor [2] that returns a wrapped resource for every Sling resource.
>> This wrapped resource will later get the resource type for the Resource
>> Editor set. That way the Resource Editor script would get called for all
>> resources.
>>
>> [1] -
>> https://github.com/sandroboehme/resourceeditor/
>> blob/master/src/main/java/org/apache/sling/reseditor/
>> ResEditorResourceProvider.java
>>
>> [2] - https://issues.apache.org/jira/browse/SLING-4001
>> [3] -
>> java.lang.UnsupportedOperationException: JcrNodeResourceMetadata is
>> locked
>>      at
>> org.apache.sling.api.resource.ResourceMetadata.checkReadOnly(
>> ResourceMetadata.java:310)
>>
>>      at
>> org.apache.sling.api.resource.ResourceMetadata.put(
>> ResourceMetadata.java:322)
>>
>>      at
>> org.apache.sling.api.resource.ResourceMetadata.setResolutionPath(
>> ResourceMetadata.java:254)
>>
>>      at
>> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.
>> getAbsoluteResourceInternal(ResourceResolverImpl.java:955)
>>
>>      at
>> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.
>> resolveInternal(ResourceResolverImpl.java:810)
>>
>>      at
>> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.
>> resolveInternal(ResourceResolverImpl.java:327)
>>
>>      at
>> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.resolve(
>> ResourceResolverImpl.java:225)
>>
>>      at
>> org.apache.sling.engine.impl.request.RequestData.
>> initResource(RequestData.java:223)
>>
>>      at
>> org.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(
>> SlingRequestProcessorImpl.java:142)
>>
>>      at
>> org.apache.sling.engine.impl.SlingMainServlet.service(
>> SlingMainServlet.java:217)
>>
>>
>> Thanks!
>>
>> Sandro
>>
>>
>

Reply via email to