Come implementare un RewriterTransformerFactory personalizzato

Problema

I link all’interno dei tag "IMG" e "FORM" non vengono riscritti (a differenza dei link all’interno dei tag "A")

Risoluzione

Per migliorare la pipeline di riscrittura, è possibile farlo implementando un RewriterTransformerFactory [1]. Si tratta di un componente opzionale utilizzato per estendere il meccanismo di riscrittura esistente. Tale RewriterTransformerFactory deve fornire un’implementazione di trasformazione [2] attraverso la quale l’html da riscrivere passa come evento SAX. Al fine di facilitare l’implementazione della trasformazione di rewriter personalizzati, è disponibile una classe AbstractContentHandler [3] per l’estensione che fornisce implementazioni predefinite dei metodi specificati dall’interfaccia org.xml.sax.ContentHandler.

Uno scheletro di esempio potrebbe assomigliare a questo:

package x.y.z;
import com.day.cq.rewriter.pipeline.AbstractContentHandler;
import com.day.cq.rewriter.pipeline.RewriterTransformerFactory;
import com.day.cq.rewriter.pipeline.Transformer;
/*
*
* @scr.component metatype="no"
* @scr.service
* @scr.property 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();
  }
}

Nota che il valore della classificazione del servizio influenza l’ordine quando questa trasformazione di riscrittura verrà attivata. Vedi [1] per maggiori dettagli a riguardo.

Prodotti interessati:

CQ 5.2.x

[1] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/RewriterTransformerFactory.html


[2] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/Transformer.html


[3] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/AbstractContentHandler.html

Logo Adobe

Accedi al tuo account