Sling ReWriter Pipelines - TransformerFactory not chaining in Multi-Tenant Setup | Community
Skip to main content
March 1, 2024
Solved

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

  • March 1, 2024
  • 1 reply
  • 618 views

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

      

 

  

 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by arunpatidar

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]">

1 reply

arunpatidar
Community Advisor
arunpatidarCommunity AdvisorAccepted solution
Community Advisor
March 1, 2024

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