fop-users  

Re: Using Apache FOP translets in java EE application

Peter Hancock
Fri, 29 Jan 2010 02:42:47 -0800

Hi Tamurg,

The quickest way to prove you are using the compiled transformation would be
to remove the stylesheets from the classpath of the application at runtime.
You would get a error if the application is trying to locate the
stylesheets.  Alternatively introduce a measurable difference between the
compiled and raw stylesheet.
How are you embedding fop in your application?  Are you following the
documentation at
http://xmlgraphics.apache.org/fop/trunk/embedding.html#render-with-xslt ?
This may help too -
http://xmlgraphics.apache.org/fop/trunk/running.html#check-input

Pete



On Thu, Jan 28, 2010 at 10:27 PM, tamugrg <sagun.gur...@auspost.com.au>wrote:

>
> Hi,
> I am trying to use Apache FOP translets which would hopefully improve my
> performance than creating new transfomer (even for the first time). I could
> not find an example of using Apache FOP translets. I am not sure whether my
> code uses translets or not. Would anyone know whether I am doing it the
> correct way in terms of compiling & using the translets &  also whether
> there is anyway that I can verify that even for the first time the xsl's
> are
> being used in the application (after server startup), it is using the
> compiled translets (from the jar file that i have put in my maven
> repository
> p1.p2.myTranslet.jar) AND not compiling the xsl's into templates again.
> Below lists what I have done.
>
> Translet Compiling
> ============
> => SET CLASSPATH=xalan-2.7.1.jar;xml-apis-1.3.04.jar;xercesIm
> pl-2.9.1.jar;serializer-2.7.1.jar
> => ava org.apache.xalan.xsltc.cmdline.Compile -p p1.p2 -x -j myTranslet.jar
> stylesheet1.xsl stylesheet2.jar
>
> Using the translets
> ============
>
> // Static part of the class has a section that creates the templates from
> all our xsl's & puts it in HashMap 'templatesStore'
>
>            for (String label_xsl : LABEL_XSL_RESOURCES)
>            {
>                Source source = classpathSource(label_xsl);
>                templatesStore.put(label_xsl,
> trasformerFactory.newTemplates(source));
>            }
>
>
> Using Translets
> ==========
>        trasformerFactory = TransformerFactory.newInstance();
>        trasformerFactory.setURIResolver(new
> ClassUriResolver(LABEL_XSL_RESOURCE_PATH));
>
>
>        // For using the translets
>        // Set the TransformerFactory system property.
>        // Note: For more flexibility, load properties from a properties
> file.
>        trasformerFactory.setAttribute("debug", Boolean.TRUE);
> //        trasformerFactory.setAttribute("use-classpath", Boolean.TRUE);
>        trasformerFactory.setAttribute("package-name", "p1.p2");
>        trasformerFactory.setAttribute("jar-name", "myTranslet");
>        trasformerFactory.setAttribute("translet-name", "myTranslet");
>
>        String key = "javax.xml.transform.TransformerFactory";
>        String value = "org.apache.xalan.xsltc.trax.TransformerFactoryImpl";
>        Properties props = System.getProperties();
>        props.put(key, value);
>        System.setProperties(props);
>
>
> // Using the translets
>    Templates templates = (Templates) templatesStore.get(xsltResourceName);
>        if (templates != null) {
>            return templates.newTransformer();
>        }
>        else
>        {
>            throw new TransformerException("Could not create a new
> Transformer for " + xsltResourceName + "; Template not found.");
>        }
> --
> View this message in context:
> http://old.nabble.com/Using-Apache-FOP-translets-in-java-EE-application-tp27364146p27364146.html
> Sent from the FOP - Users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
>
>