org.osjava.jardiff.ant
Class JDXSLTProcess

java.lang.Object
  extended by org.apache.tools.ant.ProjectComponent
      extended by org.apache.tools.ant.Task
          extended by org.apache.tools.ant.taskdefs.MatchingTask
              extended by org.osjava.jardiff.ant.JDXSLTProcess
All Implemented Interfaces:
java.lang.Cloneable, org.apache.tools.ant.taskdefs.XSLTLogger, org.apache.tools.ant.types.selectors.SelectorContainer

public class JDXSLTProcess
extends org.apache.tools.ant.taskdefs.MatchingTask
implements org.apache.tools.ant.taskdefs.XSLTLogger


Nested Class Summary
static class JDXSLTProcess.Factory
          The factory element to configure a transformer factory
static class JDXSLTProcess.OutputProperty
          Specify how the result tree should be output as specified in the specification.
static class JDXSLTProcess.Param
          The Param inner class used to store XSL parameters
private  class JDXSLTProcess.StyleMapper
          Mapper implementation of the "traditional" way <xslt> mapped filenames.
 
Field Summary
private  java.io.File baseDir
          where to find the source XML file, default is the project's basedir
private  org.apache.tools.ant.types.Path classpath
          Classpath to use when trying to load the XSL processor
private  java.io.File destDir
          destination directory
private  JDXSLTProcess.Factory factory
          factory element for TraX processors only
private  org.apache.tools.ant.util.FileUtils fileUtils
          Utilities used for file operations
private  boolean force
          force output of target files even if they already exist
private  java.io.File inFile
          Input XML document to be used
private  org.apache.tools.ant.taskdefs.XSLTLiaison liaison
          The Liason implementation to use to communicate with the XSL processor
private  org.apache.tools.ant.AntClassLoader loader
          AntClassLoader for the nested <classpath> - if set.
private  org.apache.tools.ant.types.Mapper mapperElement
          Mapper to use when a set of files gets processed.
private  java.io.File outFile
          Output file
private  java.util.Vector outputProperties
          XSL output properties to be used
private  java.util.Vector params
          additional parameters to be passed to the stylesheets
private  boolean performDirectoryScan
          Whether to style all files in the included directories as well.
private  java.lang.String processor
          The name of the XSL processor to use
private  boolean reuseLoadedStylesheet
          whether to reuse Transformer if transforming multiple files.
private  boolean stylesheetLoaded
          Flag which indicates if the stylesheet has been loaded into the processor
private  java.lang.String styleurl
          Systemid of stylesheet (url).
private  java.lang.String targetExtension
          extension of the files produced by XSL processing
private static java.lang.String TRAX_LIAISON_CLASS
          Name of the TRAX Liaison class
private static java.lang.String XALAN_LIAISON_CLASS
          Name of the now-deprecated Xalan liaison class
private  org.apache.tools.ant.types.XMLCatalog xmlCatalog
          for resolving entities such as dtds
private  java.lang.String xslFile
          XSL stylesheet
private static java.lang.String XSLP_LIAISON_CLASS
          Name of the now-deprecated XSLP Liaison class
 
Fields inherited from class org.apache.tools.ant.taskdefs.MatchingTask
fileset
 
Fields inherited from class org.apache.tools.ant.Task
target, taskName, taskType, wrapper
 
Fields inherited from class org.apache.tools.ant.ProjectComponent
description, location, project
 
Constructor Summary
JDXSLTProcess()
          Creates a new JDXSLTProcess Task.
 
Method Summary
 void addConfiguredXMLCatalog(org.apache.tools.ant.types.XMLCatalog xmlCatalog)
          Add the catalog to our internal catalog
 void addMapper(org.apache.tools.ant.types.Mapper mapper)
          Defines the mapper to map source to destination files.
protected  void configureLiaison(java.lang.Object stylesheet)
          Loads the stylesheet and set xsl:param parameters.
 org.apache.tools.ant.types.Path createClasspath()
          Set the optional classpath to the XSL processor
 JDXSLTProcess.Factory createFactory()
          Create the factory element to configure a trax liaison.
 JDXSLTProcess.OutputProperty createOutputProperty()
          Create an instance of an output property to be configured.
 JDXSLTProcess.Param createParam()
          Create an instance of an XSL parameter for configuration by Ant.
private  void ensureDirectoryFor(java.io.File targetFile)
          Ensure the directory exists for a given file
 void execute()
          Executes the task.
 JDXSLTProcess.Factory getFactory()
          Get the factory instance configured for this processor
protected  org.apache.tools.ant.taskdefs.XSLTLiaison getLiaison()
          Get the Liason implementation to use in processing.
 java.util.Enumeration getOutputProperties()
           
 org.apache.tools.ant.types.XMLCatalog getXMLCatalog()
          Get the XML catalog containing entity definitions
 void init()
          Initialize internal instance of XMLCatalog
private  java.lang.Class loadClass(java.lang.String classname)
          Load named class either via the system classloader or a given custom classloader.
private  void process(java.io.File inFile, java.io.File outFile, java.lang.Object stylesheet)
          Process the input file to the output file with the given stylesheet.
private  void process(java.io.File baseDir, java.lang.String xmlFile, java.io.File destDir, java.lang.Object stylesheet)
          Processes the given input XML file and stores the result in the given resultFile.
private  void resolveProcessor(java.lang.String proc)
          Load processor here instead of in setProcessor - this will be called from within execute, so we have access to the latest classpath.
 void setBasedir(java.io.File dir)
          Set the base directory; optional, default is the project's basedir.
 void setClasspath(org.apache.tools.ant.types.Path classpath)
          Set the optional classpath to the XSL processor
 void setClasspathRef(org.apache.tools.ant.types.Reference r)
          Set the reference to an optional classpath to the XSL processor
 void setDestdir(java.io.File dir)
          Set the destination directory into which the XSL result files should be copied to; required, unless in and out are specified.
 void setExtension(java.lang.String name)
          Set the desired file extension to be used for the target; optional, default is html.
 void setForce(boolean force)
          Set whether to check dependencies, or always generate; optional, default is false.
 void setIn(java.io.File inFile)
          specifies a single XML document to be styled.
 void setOut(java.io.File outFile)
          Specifies the output name for the styled result from the in attribute; required if in is set
 void setProcessor(java.lang.String processor)
          Set the name of the XSL processor to use; optional, default trax.
 void setReloadStylesheet(boolean b)
          Controls whether the stylesheet is reloaded for every transform.
 void setScanIncludedDirectories(boolean b)
          Whether to style all files in the included directories as well; optional, default is true.
 void setStyle(java.lang.String xslFile)
          Name of the stylesheet to use - given either relative to the project's basedir or as an absolute path; required.
 void setStyleurl(java.lang.String styleurl)
          Set the stylesheet url.
 
Methods inherited from class org.apache.tools.ant.taskdefs.MatchingTask
add, addAnd, addContains, addContainsRegexp, addCustom, addDate, addDepend, addDepth, addDifferent, addFilename, addMajority, addModified, addNone, addNot, addOr, addPresent, addSelector, addSize, addType, appendSelector, createExclude, createExcludesFile, createInclude, createIncludesFile, createPatternSet, getDirectoryScanner, getImplicitFileSet, getSelectors, hasSelectors, selectorCount, selectorElements, setCaseSensitive, setDefaultexcludes, setExcludes, setExcludesfile, setFollowSymlinks, setIncludes, setIncludesfile, setProject, XsetIgnore, XsetItems
 
Methods inherited from class org.apache.tools.ant.Task
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
 
Methods inherited from class org.apache.tools.ant.ProjectComponent
clone, getDescription, getLocation, getProject, setDescription, setLocation
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.tools.ant.taskdefs.XSLTLogger
log
 

Field Detail

destDir

private java.io.File destDir
destination directory


baseDir

private java.io.File baseDir
where to find the source XML file, default is the project's basedir


xslFile

private java.lang.String xslFile
XSL stylesheet


targetExtension

private java.lang.String targetExtension
extension of the files produced by XSL processing


params

private java.util.Vector params
additional parameters to be passed to the stylesheets


inFile

private java.io.File inFile
Input XML document to be used


outFile

private java.io.File outFile
Output file


processor

private java.lang.String processor
The name of the XSL processor to use


classpath

private org.apache.tools.ant.types.Path classpath
Classpath to use when trying to load the XSL processor


styleurl

private java.lang.String styleurl
Systemid of stylesheet (url).


liaison

private org.apache.tools.ant.taskdefs.XSLTLiaison liaison
The Liason implementation to use to communicate with the XSL processor


stylesheetLoaded

private boolean stylesheetLoaded
Flag which indicates if the stylesheet has been loaded into the processor


force

private boolean force
force output of target files even if they already exist


fileUtils

private org.apache.tools.ant.util.FileUtils fileUtils
Utilities used for file operations


outputProperties

private java.util.Vector outputProperties
XSL output properties to be used


xmlCatalog

private org.apache.tools.ant.types.XMLCatalog xmlCatalog
for resolving entities such as dtds


TRAX_LIAISON_CLASS

private static final java.lang.String TRAX_LIAISON_CLASS
Name of the TRAX Liaison class

See Also:
Constant Field Values

XSLP_LIAISON_CLASS

private static final java.lang.String XSLP_LIAISON_CLASS
Name of the now-deprecated XSLP Liaison class

See Also:
Constant Field Values

XALAN_LIAISON_CLASS

private static final java.lang.String XALAN_LIAISON_CLASS
Name of the now-deprecated Xalan liaison class

See Also:
Constant Field Values

performDirectoryScan

private boolean performDirectoryScan
Whether to style all files in the included directories as well.

Since:
Ant 1.5

factory

private JDXSLTProcess.Factory factory
factory element for TraX processors only

Since:
Ant 1.6

reuseLoadedStylesheet

private boolean reuseLoadedStylesheet
whether to reuse Transformer if transforming multiple files.

Since:
1.5.2

loader

private org.apache.tools.ant.AntClassLoader loader
AntClassLoader for the nested <classpath> - if set.

We keep this here in order to reset the context classloader in execute. We can't use liaison.getClass().getClassLoader() since the actual liaison class may have been loaded by a loader higher up (system classloader, for example).

Since:
Ant 1.6.2

mapperElement

private org.apache.tools.ant.types.Mapper mapperElement
Mapper to use when a set of files gets processed.

Since:
Ant 1.6.2
Constructor Detail

JDXSLTProcess

public JDXSLTProcess()
Creates a new JDXSLTProcess Task.

Since:
JarDiff 0.2
Method Detail

setScanIncludedDirectories

public void setScanIncludedDirectories(boolean b)
Whether to style all files in the included directories as well; optional, default is true.

Parameters:
b - true if files in included directories are processed.
Since:
Ant 1.5

setReloadStylesheet

public void setReloadStylesheet(boolean b)
Controls whether the stylesheet is reloaded for every transform.

Setting this to true may get around a bug in certain Xalan-J versions, default is false.

Since:
Ant 1.5.2

addMapper

public void addMapper(org.apache.tools.ant.types.Mapper mapper)
Defines the mapper to map source to destination files.

Throws:
org.apache.tools.ant.BuildException - if more than one mapper is defined
Since:
Ant 1.6.2

execute

public void execute()
             throws org.apache.tools.ant.BuildException
Executes the task.

Overrides:
execute in class org.apache.tools.ant.Task
Throws:
org.apache.tools.ant.BuildException - if there is an execution problem.

setForce

public void setForce(boolean force)
Set whether to check dependencies, or always generate; optional, default is false.

Parameters:
force - true if always generate.

setBasedir

public void setBasedir(java.io.File dir)
Set the base directory; optional, default is the project's basedir.

Parameters:
dir - the base directory

setDestdir

public void setDestdir(java.io.File dir)
Set the destination directory into which the XSL result files should be copied to; required, unless in and out are specified.

Parameters:
dir - the name of the destination directory

setExtension

public void setExtension(java.lang.String name)
Set the desired file extension to be used for the target; optional, default is html.

Parameters:
name - the extension to use

setStyle

public void setStyle(java.lang.String xslFile)
Name of the stylesheet to use - given either relative to the project's basedir or as an absolute path; required.

Parameters:
xslFile - the stylesheet to use

setClasspath

public void setClasspath(org.apache.tools.ant.types.Path classpath)
Set the optional classpath to the XSL processor

Parameters:
classpath - the classpath to use when loading the XSL processor

createClasspath

public org.apache.tools.ant.types.Path createClasspath()
Set the optional classpath to the XSL processor

Returns:
a path instance to be configured by the Ant core.

setClasspathRef

public void setClasspathRef(org.apache.tools.ant.types.Reference r)
Set the reference to an optional classpath to the XSL processor

Parameters:
r - the id of the Ant path instance to act as the classpath for loading the XSL processor

setProcessor

public void setProcessor(java.lang.String processor)
Set the name of the XSL processor to use; optional, default trax. Other values are "xalan" for Xalan1 and "xslp" for XSL:P, though the later is strongly deprecated.

Parameters:
processor - the name of the XSL processor

setStyleurl

public void setStyleurl(java.lang.String styleurl)
Set the stylesheet url.

Since:
JarDiff 0.2

addConfiguredXMLCatalog

public void addConfiguredXMLCatalog(org.apache.tools.ant.types.XMLCatalog xmlCatalog)
Add the catalog to our internal catalog

Parameters:
xmlCatalog - the XMLCatalog instance to use to look up DTDs

resolveProcessor

private void resolveProcessor(java.lang.String proc)
                       throws java.lang.Exception
Load processor here instead of in setProcessor - this will be called from within execute, so we have access to the latest classpath.

Parameters:
proc - the name of the processor to load.
Throws:
java.lang.Exception - if the processor cannot be loaded.

loadClass

private java.lang.Class loadClass(java.lang.String classname)
                           throws java.lang.Exception
Load named class either via the system classloader or a given custom classloader.

Parameters:
classname - the name of the class to load.
Returns:
the requested class.
Throws:
java.lang.Exception - if the class could not be loaded.

setOut

public void setOut(java.io.File outFile)
Specifies the output name for the styled result from the in attribute; required if in is set

Parameters:
outFile - the output File instance.

setIn

public void setIn(java.io.File inFile)
specifies a single XML document to be styled. Should be used with the out attribute; ; required if out is set

Parameters:
inFile - the input file

process

private void process(java.io.File baseDir,
                     java.lang.String xmlFile,
                     java.io.File destDir,
                     java.lang.Object stylesheet)
              throws org.apache.tools.ant.BuildException
Processes the given input XML file and stores the result in the given resultFile.

Parameters:
baseDir - the base directory for resolving files.
xmlFile - the input file
destDir - the destination directory
stylesheet - the stylesheet to use.
Throws:
org.apache.tools.ant.BuildException - if the processing fails.

process

private void process(java.io.File inFile,
                     java.io.File outFile,
                     java.lang.Object stylesheet)
              throws org.apache.tools.ant.BuildException
Process the input file to the output file with the given stylesheet.

Parameters:
inFile - the input file to process.
outFile - the destination file.
stylesheet - the stylesheet to use.
Throws:
org.apache.tools.ant.BuildException - if the processing fails.

ensureDirectoryFor

private void ensureDirectoryFor(java.io.File targetFile)
                         throws org.apache.tools.ant.BuildException
Ensure the directory exists for a given file

Parameters:
targetFile - the file for which the directories are required.
Throws:
org.apache.tools.ant.BuildException - if the directories cannot be created.

getFactory

public JDXSLTProcess.Factory getFactory()
Get the factory instance configured for this processor

Returns:
the factory instance in use

getXMLCatalog

public org.apache.tools.ant.types.XMLCatalog getXMLCatalog()
Get the XML catalog containing entity definitions

Returns:
the XML catalog for the task.

getOutputProperties

public java.util.Enumeration getOutputProperties()

getLiaison

protected org.apache.tools.ant.taskdefs.XSLTLiaison getLiaison()
Get the Liason implementation to use in processing.

Returns:
an instance of the XSLTLiason interface.

createParam

public JDXSLTProcess.Param createParam()
Create an instance of an XSL parameter for configuration by Ant.

Returns:
an instance of the Param class to be configured.

createOutputProperty

public JDXSLTProcess.OutputProperty createOutputProperty()
Create an instance of an output property to be configured.

Returns:
the newly created output property.
Since:
Ant 1.5

init

public void init()
          throws org.apache.tools.ant.BuildException
Initialize internal instance of XMLCatalog

Overrides:
init in class org.apache.tools.ant.Task
Throws:
org.apache.tools.ant.BuildException

configureLiaison

protected void configureLiaison(java.lang.Object stylesheet)
                         throws org.apache.tools.ant.BuildException
Loads the stylesheet and set xsl:param parameters.

Parameters:
stylesheet - the file form which to load the stylesheet.
Throws:
org.apache.tools.ant.BuildException - if the stylesheet cannot be loaded.

createFactory

public JDXSLTProcess.Factory createFactory()
                                    throws org.apache.tools.ant.BuildException
Create the factory element to configure a trax liaison.

Returns:
the newly created factory element.
Throws:
org.apache.tools.ant.BuildException - if the element is created more than one time.