You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by co...@apache.org on 2001/01/02 15:08:30 UTC

cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional XalanLiaison.java XslpLiaison.java

conor       01/01/02 06:08:30

  Modified:    src/main/org/apache/tools/ant/taskdefs XSLTLiaison.java
                        XSLTProcess.java
               src/main/org/apache/tools/ant/taskdefs/optional
                        XalanLiaison.java XslpLiaison.java
  Log:
  Add nested param element to the style task.
  Also allow an input and output file to be specified.
  
  Submitted by:	Jeff Martin <jm...@silacom.com>
  
  Revision  Changes    Path
  1.2       +3 -1      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java
  
  Index: XSLTLiaison.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XSLTLiaison.java	2000/06/23 16:47:04	1.1
  +++ XSLTLiaison.java	2001/01/02 14:08:30	1.2
  @@ -59,11 +59,13 @@
   /**
    *
    * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
  - * @version $Revision: 1.1 $ $Date: 2000/06/23 16:47:04 $
  + * @version $Revision: 1.2 $ $Date: 2001/01/02 14:08:30 $
    */
   public interface XSLTLiaison {
   
       public void setStylesheet(String fileName) throws Exception;
  +
  +    public void addParam(String name, String expression) throws Exception;
   
       public void transform(String infile, String outfile) throws Exception;
   
  
  
  
  1.10      +90 -74    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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XSLTProcess.java	2000/11/25 02:38:37	1.9
  +++ XSLTProcess.java	2001/01/02 14:08:30	1.10
  @@ -84,7 +84,7 @@
    * @author <a href="mailto:kvisco@exoffice.com">Keith Visco</a>
    * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
    * @author <a href="mailto:russgold@acm.org">Russell Gold</a>
  - * @version $Revision: 1.9 $ $Date: 2000/11/25 02:38:37 $
  + * @version $Revision: 1.10 $ $Date: 2001/01/02 14:08:30 $
    */
   public class XSLTProcess extends MatchingTask {
   
  @@ -95,6 +95,11 @@
       private File xslFile = null;
   
       private String targetExtension = ".html";
  +    private Vector params = new Vector();
  + 
  +    private File inFile = null;
  + 
  +    private File outFile = null;
   
       private XSLTLiaison liaison;
   
  @@ -113,8 +118,10 @@
           String[]         list;
           String[]         dirs;
   
  -        if (baseDir == null)
  +        if (baseDir == null) {
               baseDir = project.resolveFile(".");
  +        }
  +        
           //-- make sure Source directory exists...
           if (destDir == null ) {
               String msg = "destdir attributes must be set!";
  @@ -147,12 +154,22 @@
                   styleSheetLastModified = file.lastModified();
                   log( "Loading stylesheet " + file, Project.MSG_INFO);
                   liaison.setStylesheet( file.toString() );
  +                for(Enumeration e = params.elements();e.hasMoreElements();) {
  +                    Param p = (Param)e.nextElement();
  +                    liaison.addParam( p.getName(), p.getExpression() );
  +                }
               } catch (Exception ex) {
                   log("Failed to read stylesheet " + xslFile, Project.MSG_INFO);
                   throw new BuildException(ex);
               }
           }
   
  +        // if we have an in file and out then process them
  +        if (inFile != null && outFile != null) {
  +            process(inFile, outFile, styleSheetLastModified);
  +            return;
  +        }
  +
           // Process all the files marked for styling
           list = scanner.getIncludedFiles();
           for (int i = 0;i < list.length; ++i) {
  @@ -217,75 +234,20 @@
           }
   
       }
  +
  +    /**
  +     * Sets an out file
  +     */
  +    public void setOut(File outFile){
  +        this.outFile = outFile;
  +    }
   
  -    /*
  -      private void process(File sourceDir, File destDir)
  -      throws BuildException
  -      {
  -
  -        
  -      if (!sourceDir.isDirectory()) {
  -      throw new BuildException(sourceDir.getName() +
  -      " is not a directory!");
  -      }
  -      else if (!destDir.isDirectory()) {
  -      throw new BuildException(destDir.getName() +
  -      " is not a directory!");
  -      }
  -
  -      String[] list = sourceDir.list(new DesirableFilter());
  -
  -      if (list == null) {
  -      return;  //-- nothing to do
  -      }
  -
  -      for (int i = 0; i < list.length; i++) {
  -
  -      String filename = list[i];
  -
  -      File inFile  = new File(sourceDir, filename);
  -
  -      //-- if inFile is a directory, recursively process it
  -      if (inFile.isDirectory()) {
  -      if (!excluded(filename)) {
  -      new File(destDir, filename).mkdir();
  -      process(inFile, new File(destDir, filename));
  -      }
  -      }
  -      //-- process XML files
  -      else if (hasXMLFileExtension(filename) && ! excluded(filename)) {
  -
  -      //-- replace extension with the target extension
  -      int idx = filename.lastIndexOf('.');
  -
  -      File outFile = new File(destDir,
  -      filename.substring(0,idx) + targetExt);
  -
  -      if ((inFile.lastModified() > outFile.lastModified()) ||
  -      (xslFile != null && xslFile.lastModified() > outFile.lastModified()))
  -      {
  -      processXML(inFile, outFile);
  -      }
  -      }
  -      else {
  -      File outFile = new File(destDir, filename);
  -      if (inFile.lastModified() > outFile.lastModified()) {
  -      try {
  -      copyFile(inFile, outFile);
  -      }
  -      catch(java.io.IOException ex) {
  -      String err = "error copying file: ";
  -      err += inFile.getAbsolutePath();
  -      err += "; " + ex.getMessage();
  -      throw new BuildException(err, ex);
  -      }
  -      //filecopyList.put(srcFile.getAbsolutePath(),
  -      //destFile.getAbsolutePath());
  -      }
  -      }
  -      } //-- </for>
  -      } //-- process(File, File)
  -    */
  +    /**
  +     * Sets an input xml file to be styled
  +     */
  +    public void setIn(File inFile){
  +        this.inFile = inFile;
  +    }
   
       /**
        * Processes the given input XML file and stores the result
  @@ -301,12 +263,16 @@
   
           try {
               inFile = new File(baseDir,xmlFile);
  -            outFile = new File(destDir,xmlFile.substring(0,xmlFile.lastIndexOf('.'))+fileExt);
  +            int dotPos = xmlFile.lastIndexOf('.');
  +            if(dotPos>0){
  +                outFile = new File(destDir,xmlFile.substring(0,xmlFile.lastIndexOf('.'))+fileExt);
  +            }else{
  +                outFile = new File(destDir,xmlFile+fileExt);
  +            }
               if (inFile.lastModified() > outFile.lastModified() ||
                   styleSheetLastModified > outFile.lastModified()) {
                   ensureDirectoryFor( outFile );
  -                //-- command line status
  -                log("Processing " + xmlFile + " to " + outFile, Project.MSG_VERBOSE);
  +                log("Transforming into "+destDir);
   
                   liaison.transform(inFile.toString(), outFile.toString());
               }
  @@ -315,12 +281,33 @@
               // If failed to process document, must delete target document,
               // or it will not attempt to process it the second time
               log("Failed to process " + inFile, Project.MSG_INFO);
  -            outFile.delete();
  +            if (outFile != null) {
  +                outFile.delete();
  +            }
  +        
               throw new BuildException(ex);
           }
   
       } //-- processXML
   
  +    private void process(File inFile, File outFile, long styleSheetLastModified) throws BuildException {
  +        try{
  +            log("In file "+inFile+" time: " + inFile.lastModified() , Project.MSG_DEBUG);
  +            log("Out file "+outFile+" time: " + outFile.lastModified() , Project.MSG_DEBUG);
  +            log("Style file "+xslFile+" time: " + styleSheetLastModified , Project.MSG_DEBUG);
  +            if (inFile.lastModified() > outFile.lastModified() ||
  +                styleSheetLastModified > outFile.lastModified()) {
  +                ensureDirectoryFor( outFile );
  +                log("Processing " + inFile + " to " + outFile, Project.MSG_INFO);
  +                liaison.transform(inFile.toString(), outFile.toString());
  +            }
  +        }catch (Exception ex) {
  +            log("Failed to process " + inFile, Project.MSG_INFO);
  +            if(outFile!=null)outFile.delete();
  +            throw new BuildException(ex);
  +        }
  +    }
  +
       private void ensureDirectoryFor( File targetFile ) throws BuildException {
           File directory = new File( targetFile.getParent() );
           if (!directory.exists()) {
  @@ -328,6 +315,35 @@
                   throw new BuildException("Unable to create directory: " 
                                            + directory.getAbsolutePath() );
               }
  +        }
  +    }
  +    
  +    public Param createParam() {
  +        Param p = new Param();
  +        params.addElement(p);
  +        return p;
  +    }
  +
  +    public class Param {
  +        private String name=null;
  +        private String expression=null;
  +        
  +        public void setName(String name){
  +            this.name = name;
  +        }
  +        
  +        public void setExpression(String expression){
  +            this.expression = expression;
  +        }
  +        
  +        public String getName() throws BuildException{
  +            if(name==null)throw new BuildException("Name attribute is missing.");
  +            return name;
  +        }
  +        
  +        public String getExpression() throws BuildException{
  +            if(expression==null)throw new BuildException("Expression attribute is missing.");
  +            return expression;
           }
       }
   } //-- XSLTProcess
  
  
  
  1.4       +5 -1      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java
  
  Index: XalanLiaison.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XalanLiaison.java	2000/08/03 09:34:05	1.3
  +++ XalanLiaison.java	2001/01/02 14:08:30	1.4
  @@ -64,7 +64,7 @@
   /**
    *
    * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
  - * @version $Revision: 1.3 $ $Date: 2000/08/03 09:34:05 $
  + * @version $Revision: 1.4 $ $Date: 2001/01/02 14:08:30 $
    */
   public class XalanLiaison implements XSLTLiaison {
   
  @@ -91,5 +91,9 @@
               return FILEURL + fileName;
           }
           return fileName;
  +    }
  +    
  +    public void addParam(String name, String value){
  +        processor.setStylesheetParam(name, value);
       }
   } //-- XalanLiaison
  
  
  
  1.3       +5 -1      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java
  
  Index: XslpLiaison.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XslpLiaison.java	2000/06/23 21:18:07	1.2
  +++ XslpLiaison.java	2001/01/02 14:08:30	1.3
  @@ -65,7 +65,7 @@
   /**
    *
    * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
  - * @version $Revision: 1.2 $ $Date: 2000/06/23 21:18:07 $
  + * @version $Revision: 1.3 $ $Date: 2001/01/02 14:08:30 $
    */
   public class XslpLiaison implements XSLTLiaison {
   
  @@ -83,6 +83,10 @@
   
       public void transform(String infile, String outfile) throws Exception {
         processor.process(infile, xslSheet, new FileWriter(outfile));
  +    }
  +
  +    public void addParam(String name, String expression){
  +      processor.setProperty(name, expression);
       }
   
   } //-- XSLPLiaison