Sorry for the noise. I posted that to the wrong list. It is re-posted to the users list now.

Best,
Sandro

Am Wed Oct  8 15:39:19 2014 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