ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From co...@apache.org
Subject cvs commit: jakarta-ant/docs/manual/CoreTasks style.html
Date Sat, 01 Feb 2003 04:39:08 GMT
conor       2003/01/31 20:39:08

  Modified:    src/main/org/apache/tools/ant/taskdefs XSLTProcess.java
               src/main/org/apache/tools/ant/taskdefs/optional
                        TraXLiaison.java
               docs/manual/CoreTasks style.html
  Log:
  Rename the reuseloadedstylesheet to reloadstylesheet with inverted sense
  Make the TraxLiason cache the templates instance
  Reset the transformer if a new stylsheet is set
  
  PR:     13589
  
  Revision  Changes    Path
  1.58      +6 -7      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
  
  Index: XSLTProcess.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -w -u -r1.57 -r1.58
  --- XSLTProcess.java	24 Jan 2003 14:34:47 -0000	1.57
  +++ XSLTProcess.java	1 Feb 2003 04:39:06 -0000	1.58
  @@ -182,16 +182,15 @@
       }
   
       /**
  -     * Whether to reuse the transformer instance when transforming
  -     * multiple files.
  +     * Controls whether the stylesheet is reloaded for every transform
        *
  -     * <p>Setting this to false may get around a bug in certain
  -     * Xalan-J version, default is true.</p>
  +     * <p>Setting this to true may get around a bug in certain
  +     * Xalan-J versions, default is false.</p>
        *
        * @since Ant 1.6
        */
  -    public void setReuseLoadedStylesheet(boolean b) {
  -        reuseLoadedStylesheet = b;
  +    public void setReloadStylesheet(boolean b) {
  +        reuseLoadedStylesheet = !b;
       }
   
       /**
  
  
  
  1.23      +63 -30    jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
  
  Index: TraXLiaison.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -w -u -r1.22 -r1.23
  --- TraXLiaison.java	31 Oct 2002 14:30:07 -0000	1.22
  +++ TraXLiaison.java	1 Feb 2003 04:39:07 -0000	1.23
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -75,6 +75,7 @@
   import javax.xml.transform.sax.SAXSource;
   import javax.xml.transform.stream.StreamResult;
   import javax.xml.transform.stream.StreamSource;
  +import javax.xml.transform.TransformerConfigurationException;
   import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.taskdefs.XSLTLiaison;
   import org.apache.tools.ant.taskdefs.XSLTLogger;
  @@ -114,6 +115,15 @@
       /** transformer to use for processing files */
       private Transformer transformer;
   
  +    /** The In memory version of the stylesheet */
  +    private Templates templates;
  +    
  +    /** 
  +     * The modification time of the stylesheet from which the templates 
  +     * are read 
  +     */
  +    private long templatesModTime;
  +        
       /** possible resolver for URIs */
       private URIResolver uriResolver;
   
  @@ -130,12 +140,22 @@
       }
   
       public void setStylesheet(File stylesheet) throws Exception {
  +        if (this.stylesheet != null) {
  +            // resetting the stylesheet - reset transformer
  +            transformer = null;
  +            
  +            // do we need to reset templates as well
  +            if (!this.stylesheet.equals(stylesheet)
  +                || (stylesheet.lastModified() != templatesModTime)) { 
  +                templates = null;
  +            }
  +        }
           this.stylesheet = stylesheet;
       }
   
       public void transform(File infile, File outfile) throws Exception {
           if (transformer == null) {
  -            transformer = newTransformer();
  +            createTransformer();
           }
   
           InputStream fis = null;
  @@ -157,12 +177,14 @@
                       fis.close();
                   }
               } catch (IOException ignored) {
  +                // ignore
               }
               try {
                   if (fos != null) {
                       fos.close();
                   }
               } catch (IOException ignored) {
  +                // ignore
               }
           }
       }
  @@ -198,14 +220,10 @@
       }
   
       /**
  -     * Create a new transformer based on the liaison settings
  -     * @return the newly created and configured transformer.
  -     * @throws Exception thrown if there is an error during creation.
  -     * @see #setStylesheet(java.io.File)
  -     * @see #addParam(java.lang.String, java.lang.String)
  -     * @see #setOutputProperty(java.lang.String, java.lang.String)
  +     * Read in templates from the stylsheet
        */
  -    private Transformer newTransformer() throws Exception {
  +    private void readTemplates() 
  +        throws IOException, TransformerConfigurationException {
           // WARN: Don't use the StreamSource(File) ctor. It won't work with
           // xalan prior to 2.2 because of systemid bugs.
   
  @@ -213,15 +231,37 @@
           // and avoid keeping the handle until the object is garbaged.
           // (always keep control), otherwise you won't be able to delete
           // the file quickly on windows.
  -        InputStream xslStream = new BufferedInputStream(
  -                new FileInputStream(stylesheet));
  +        InputStream xslStream = null;
           try {
  +            xslStream 
  +                = new BufferedInputStream(new FileInputStream(stylesheet));
  +            templatesModTime = stylesheet.lastModified();
               StreamSource src = new StreamSource(xslStream);
               // Always set the systemid to the source for imports, includes...
               // in xsl and xml...
               src.setSystemId(JAXPUtils.getSystemId(stylesheet));
  -            Templates templates = getFactory().newTemplates(src);
  -            Transformer transformer = templates.newTransformer();
  +            templates = getFactory().newTemplates(src);
  +        } finally {
  +            if (xslStream != null) {
  +                xslStream.close();
  +            }
  +        }
  +    }
  +    
  +    /**
  +     * Create a new transformer based on the liaison settings
  +     * @return the newly created and configured transformer.
  +     * @throws Exception thrown if there is an error during creation.
  +     * @see #setStylesheet(java.io.File)
  +     * @see #addParam(java.lang.String, java.lang.String)
  +     * @see #setOutputProperty(java.lang.String, java.lang.String)
  +     */
  +    private void createTransformer() throws Exception {
  +        if (templates == null) {
  +            readTemplates();
  +        }
  +
  +        transformer = templates.newTransformer();
   
               // configure the transformer...
               transformer.setErrorListener(this);
  @@ -235,13 +275,6 @@
               for (int i = 0; i < outputProperties.size(); i++) {
                   final String[] pair = (String[]) outputProperties.elementAt(i);
                   transformer.setOutputProperty(pair[0], pair[1]);
  -            }
  -            return transformer;
  -        } finally {
  -            try {
  -                xslStream.close();
  -            } catch (IOException ignored) {
  -            }
           }
       }
   
  
  
  
  1.25      +4 -4      jakarta-ant/docs/manual/CoreTasks/style.html
  
  Index: style.html
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/style.html,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -w -u -r1.24 -r1.25
  --- style.html	15 Nov 2002 11:59:31 -0000	1.24
  +++ style.html	1 Feb 2003 04:39:07 -0000	1.25
  @@ -152,11 +152,11 @@
       <td valign="top" align="center">No</td>
     </tr>
     <tr>
  -    <td valign="top">reuseloadedstylesheet</td>
  -    <td valign="top">Reuse the same transformer when transforming
  -    multiple files.  If you set this to false, performance will
  +    <td valign="top">reloadstylesheet</td>
  +    <td valign="top">Control whether the stylesheet transformer is created
  +    anew for every transform opertaion. If you set this to true, performance may
       suffer, but you may work around a bug in certain Xalan-J versions.
  -    Default is <code>true</code>.  <em>Since Ant 1.6</em>.</td>
  +    Default is <code>false</code>.  <em>Since Ant 1.6</em>.</td>
       <td valign="top" align="center">No</td>
     </tr>
   </table>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ant-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: ant-dev-help@jakarta.apache.org


Mime
View raw message