Expand my Community achievements bar.

Guidelines for the Responsible Use of Generative AI in the Experience Cloud Community.
SOLVED

Sling ReWriter Pipelines - TransformerFactory not chaining in Multi-Tenant Setup

Avatar

Level 1

Hi All,

We have multi-tenant setup with each tenant site having its own sling rewriter configuration under /config/rewriter folders. 
Our setup is as described below.

site1/config/rewriter
node properties as
{
"jcr:primaryType": "sling:Folder",
"jcr:createdBy": "admin",
"enabled": true,
"serializerType": "htmlwriter",
"transformerTypes": [
"site1extlink",
"linkchecker",
"versioned-clientlibs"
],
"order": 3,
"paths": [
"/content/site1/en"
],
"contentTypes": [
"text/html"
],
"resourceTypes": [
"site1/components/structure/pagestructure1",
"site1/components/structure/pagestructure2"
],
"generatorType": "htmlparser"
}

Configuration for Site 2 as below
site2/config/rewriter
node properties as
{
"jcr:primaryType": "sling:Folder",
"jcr:createdBy": "admin",
"enabled": true,
"serializerType": "htmlwriter",
"transformerTypes": [
"site2extlink",
"linkchecker",
"versioned-clientlibs"
],
"order": 1,
"contentTypes": [
"text/html"
],
"generatorType": "htmlparser"
}

The issue is only the "site2extlink" configured TranformerFactory implementation class is invoked even when accessing pages created using site1 page template resourceTypes.
The "site1extlink" configured TranformerFactory implementation is never invoked even though it has highger "order" property.
Are sling rewriter pipelines not chained?

 

I tried various options like
* Re-installing the site1 bundle after the site2 bundle
* setting "service.ranking" property higher for site1 TranformerFactory implementation class.
* both Sling writer configurations are showing up as active on http://localhost:4503/system/console/status-slingrewriter link.

 

Any help/guidance in solving this issue is greatly appreciated.

 

 

Thanks,
Pavani

      

 

  

 

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @PavaniTu 
The config location within repository does not make them restricted with respective content path.

So site2extlink is applicable for all the content path, since it is not restricted.

 

site1extlink should execute only within /content/site1/en

 

order Long The configurations are sorted by this order, order must be higher or equal to 0. The configuration with the highest order is tried first. Default value (if not set): 0

 

 

Example : 

xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured"
contentTypes="[text/html]"
enabled="{Boolean}true"
generatorType="htmlparser"
order="1000"
paths="[/content/aemlab/oneweb/reference-content,/content/experience-fragments/aemlab/oneweb/reference-content/]"
serializerType="htmlwriter"
transformerTypes="[linkrewriter,versioned-clientlibs]">



Arun Patidar

View solution in original post

1 Reply

Avatar

Correct answer by
Community Advisor

Hi @PavaniTu 
The config location within repository does not make them restricted with respective content path.

So site2extlink is applicable for all the content path, since it is not restricted.

 

site1extlink should execute only within /content/site1/en

 

order Long The configurations are sorted by this order, order must be higher or equal to 0. The configuration with the highest order is tried first. Default value (if not set): 0

 

 

Example : 

xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured"
contentTypes="[text/html]"
enabled="{Boolean}true"
generatorType="htmlparser"
order="1000"
paths="[/content/aemlab/oneweb/reference-content,/content/experience-fragments/aemlab/oneweb/reference-content/]"
serializerType="htmlwriter"
transformerTypes="[linkrewriter,versioned-clientlibs]">



Arun Patidar