Hi,

we have to implement two slightly opposing sets of requirements:

1a) Create notification e-mails with links to resources
1b) Allow external systems to store references to resources and to
retrieve resource data through that reference at a later date

and

2) Moving resources within the tree based on business processes

By moving a resource, the path would naturally change, which would
render any e-mail URL or external reference useless. For this reason,
it would be desirable to be able to use the node's UUID or, in cases
where the node was created by an external system, an immutable
property of the node which contains an externally created Id. Any URL
or reference based on this information would therefore remain valid
regardless of where the node is in the tree.

Our proposed solution is to implement a new ResourceProvider, mounted
in the virtual tree (under /uuid for example), which would process
URLs such as /uuid/e07a566f-9099-4859-bcdb-aadf76275bf2.tidy.json and
invoke the javax.jcr.Session.getItem method with [<uuid>] (e.g.
[e07a566f-9099-4859-bcdb-aadf76275bf2]) as the argument.

This works and it is possible to retrieve a JCR node with this
implemention. However, it is not currently possible to reuse
JcrNodeResource, as this class is a package private class in a private
package (bundle: org.apache.sling.jcr.resource). We do not wish to
implement our own JcrNodeResource.

Would it be possible to make these classes (namely JcrItemResource,
JcrPropertyResource and JcrNodeResource) available to other bundles,
either directly or through a public factory class?

Thanks in advance

Reply via email to