You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by Justin Edelson <ju...@gmail.com> on 2010/06/04 21:54:30 UTC

Fwd: [CONF] Apache Sling > Multiple Workspace Support

I went ahead and put this in SLING for now. Once it's firmed up a bit,
I'll move it into SLINGxSITE.

Justin

-------- Original Message --------
Subject: 	[CONF] Apache Sling > Multiple Workspace Support
Date: 	Fri, 4 Jun 2010 15:52:00 -0400 (EDT)
From: 	confluence@apache.org
Reply-To: 	dev@sling.apache.org
To: 	commits@sling.apache.org



    Multiple Workspace Support

<http://cwiki.apache.org/confluence/display/SLING/Multiple+Workspace+Support>


        Page *added* by Justin Edelson
        <http://cwiki.apache.org/confluence/display/~justinedelson>


  Multi-Workspace Support

The Java Content Repository (JSR-170/JSR-283) standard requires that
content repositories be composed of one or more workspaces which contain
the actual content nodes. Workspaces are intended to be used to store
different branches of the same node graph (see
http://wiki.apache.org/jackrabbit/DavidsModel#Rule_.233:_Workspaces_are_for_clone.28.29.2C_merge.28.29_and_update.28.29.).


    Resource Resolution

By default, only the default workspace will be consulted during resource
resolution.


      Configuration

To enable multi-workspace resource resolution, set the
resource.resolver.multiworkspace configuration property of PID
org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl to
true. This can be done via the Web Console on the Configuration screen.

Unable to render embedded object: File (00000039.png) not found.

By default, Sling's JCR Resource Resolver will resolve resources from
the default workspace (typically named "default"). An alternate
workspace can be specified by including a workspace as a colon-delimited
prefix to the path. For example:

Resource res = resResolver.getResource("ws2:/path/to/node");


      Request-based Resolving

When resolving a resource based on an HttpServletRequest, the workspace
name can also be provided through a request attribute named
org.apache.sling.api.resource.ResourceResolver/use.workspace. Note that
Sling does not provide any mechanism to set this attribute. Since
resource resolution occurs very early in the Sling request pipeline (see
http://sling.apache.org/site/filters.html), you must set this attribute
either outside of Sling (i.e. in a Servlet Filter) or in the
Authentication phase.

If this attribute is set at the time of resolution (i.e. is passed to
ResourceResolver.resolve(HttpServletRequest) or
ResourceResolver.resolve(HttpServletRequest, String)), then future
invocations of ResourceResolver.adaptTo(Session.class) will return a
javax.jcr.Session logged into the requested workspace.


      Impact on Resource instances

Regardless of how a Resource is resolved in a non-default workspace, the
path of the resolved resource will contain the workspace name as a path
prefix. This means that Resource.getPath() will not equal
Resource.adaptTo(Node.class).getPath().


    JCR Resource Events

The jcr.resource bundle includes support for converting JCR Observation
events into OSGi EventAdmin events. Once multi-workspace support is
enabled, resource events will be sent for JCR events across all
workspaces, with the resource path containing the workspace prefix.


    Script Resolution

By default, scripts are always resolved from the default workspace,
regardless of how the Resource Resolver is configured. The default
workspace for scripts can be configured separately from the default
workspace for resources by setting the
servletresolver.defaultScriptWorkspace configuration property of PID
org.apache.sling.servlets.resolver.SlingServletResolver to true.

Unable to render embedded object: File (2010-06-04_1550.png) not found.

Script resolution can also be configured to look first (or only) in the
same workspace as the resource.

If servletresolver.useRequestWorkspace is true and
servletresolver.useDefaultWorkspace is false, *only* the workspace
containing the resource will be used for resolution.
If servletresolver.useRequestWorkspace is true and
servletresolver.useDefaultWorkspace is also true, the resource's
workspace will be consulted first and, if nothing is found, the default
workspace will be checked.

Change Notification Preferences
<http://cwiki.apache.org/confluence/users/viewnotifications.action>
View Online
<http://cwiki.apache.org/confluence/display/SLING/Multiple+Workspace+Support>
| Add Comment
<http://cwiki.apache.org/confluence/display/SLING/Multiple+Workspace+Support?showComments=true&showCommentArea=true#addcomment>