How to implement a custom RewriterTransformerFactory


Links within "IMG" and "FORM" tags are not rewritten (in contrast to links within "A" tags)


In order to enhance the rewriting pipeline, you can do so by implementing a custom RewriterTransformerFactory [1]. This is an optional component used to extend the existing rewriting mechanism. Such a RewriterTransformerFactory must provide a Transformer [2] implementation through which the html to be rewritten passes as SAX events. In order to ease the implementation of custom rewriter transformers, an AbstractContentHandler [3] class is available for extension which provides default implementations of methods specified by the org.xml.sax.ContentHandler interface.

An example skeleton could look like this:

package x.y.z;
* @scr.component metatype="no"
* @scr.service
* name="service.ranking" value="-100" type="Integer"
public class MyRewriterTransformer extends AbstractContentHandler
               implements RewriterTransformerFactory, Transformer {

  // override startElement method
  public void startElement(String uri, String loc, String raw, Attributes a)
               throws SAXException {

      // implement your custom link rewriting here

  public Transformer createTransformer() {
      return new MyRewriterTransformer();

Please note that the value of the service-ranking influences the order when this rewriting transformer will be triggered. See [1] for more details on that.

Applies To

CQ 5.2.x