Delegating Servlet
Available since version 1.0.0
Purpose
Avoid polluting the /apps
namespace for one-off overlays, and to enable deployment of multiple overlay options while enabling the system to select the implementation to use.
Use Cases
- Moving resource type implementations without modifying all content
sling:resourceType
properties - Overlaying OOTB
/libs
behavior without creating overlay content trees under/apps
not specific to your organization/project (ex./apps/foundation
or/apps/cq
)
This Servlet Factory allows “Source resource types” to be mapped to a “Target resource type”, effectively providing an “in code” overlay of the “Source resource type”.
How to Use
To create a delegation mapping, create a new sling:OsgiConfig
node for a factory configuration:
/apps/myapp/config.author/com.adobe.acs.commons.util.impl.DelegatingServletFactoryImpl-SomeFriendlyName
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="sling:OsgiConfig"
sling.servlet.resourceTypes="resource/type/to/delegate"
sling.servlet.selectors="optionally.scope.with.selectors"
sling.servlet.extensions="optionally.scope.with.extension.usually.html"
sling.servlet.methods="optionally.scope.w.method.usually.GET"
prop.target-resource-type="resource/type/to/delegate/to"/>
Example
The ACS AEM Commons Designer - ClientLibs implementation uses the Delegating Servlet to delegate requests from resource type wcm/core/components/designer
to acs-commons/components/utilities/designer
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="sling:OsgiConfig"
sling.servlet.resourceTypes="wcm/core/components/designer"
sling.servlet.selectors=""
sling.servlet.extensions="html"
sling.servlet.methods="GET"
prop.target-resource-type="acs-commons/components/utilities/designer"/>