Uploaded image for project: 'Cocoon 3 (Retired)'
  1. Cocoon 3 (Retired)
  2. COCOON3-6

The org.apache.cocoon.pipeline.component.sax.XSLTTransformer can be optimized

Details

    • New Feature
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 3.0.0-alpha-2
    • 3.0.0-alpha-2
    • cocoon-sax
    • None

    Description

      Every time the XSLTTransformer#setXMLConsumer method is called, the XSLT is parsed reading the URL source and used to create the javax.xml.transform.sax.TransformerHandler: to be more clear

      [...]
      XSLTTransformer xsltTransformer = new
      XSLTTransformer(getClass().getResource("myXSLT.xsl"));

      Pipeline pipeline1 = new NonCachingPipeline();
      pipeline1.addComponent(new StringGenerator("<x><y/></x>"));
      pipeline1.addComponent(xsltTransformer);
      pipeline1.addComponent(new XMLSerializer());
      pipeline1.setup(System.out);
      pipeline1.execute();

      Pipeline pipeline2 = new NonCachingPipeline();
      pipeline2.addComponent(new StringGenerator("<z><w/></z>"));
      pipeline2.addComponent(xsltTransformer); <========================== the URL pointed by getClass().getResource("myXSLT.xsl") will be parsed again!!!
      pipeline2.addComponent(new XMLSerializer());
      pipeline2.setup(System.out);
      pipeline2.execute();

      As a quick solution we can store the Template to build the transformer handler objects in a static hashmap, but in the future we should introduce stores.

      Attachments

        1. XSLTTransformerOptimization.patch
          8 kB
          Simone Tripodi
        2. OptimizedXSLT+xsltcTransformer.patch
          20 kB
          Simone Tripodi

        Activity

          People

            reinhard@apache.org Reinhard Poetz
            simone.tripodi Simone Tripodi
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment