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

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

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 3.0.0-alpha-2
    • Fix Version/s: 3.0.0-alpha-2
    • Component/s: cocoon-sax
    • Labels:
      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

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: