Feature project for Adempiere target platform
This commit is contained in:
parent
c27d440af9
commit
b618a1683d
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>org.adempiere.target.platform-feature</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.pde.FeatureBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.pde.FeatureNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1 @@
|
||||||
|
bin.includes = feature.xml
|
|
@ -0,0 +1,179 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feature
|
||||||
|
id="org.adempiere.target.platform"
|
||||||
|
label="Adempiere Target Platform"
|
||||||
|
version="1.0.0.qualifier"
|
||||||
|
provider-name="Adempiere.org">
|
||||||
|
|
||||||
|
<description url="http://www.example.com/description">
|
||||||
|
[Enter Feature Description here.]
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<copyright url="http://www.example.com/copyright">
|
||||||
|
[Enter Copyright Description here.]
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<license url="http://www.example.com/license">
|
||||||
|
[Enter License Description here.]
|
||||||
|
</license>
|
||||||
|
|
||||||
|
<includes
|
||||||
|
id="org.eclipse.equinox.executable"
|
||||||
|
version="0.0.0"/>
|
||||||
|
|
||||||
|
<includes
|
||||||
|
id="org.eclipse.equinox.server.core"
|
||||||
|
version="0.0.0"/>
|
||||||
|
|
||||||
|
<includes
|
||||||
|
id="org.eclipse.equinox.server.p2"
|
||||||
|
version="0.0.0"/>
|
||||||
|
|
||||||
|
<includes
|
||||||
|
id="org.adempiere.geminiweb"
|
||||||
|
version="0.0.0"/>
|
||||||
|
|
||||||
|
<includes
|
||||||
|
id="org.adempiere.bundles.external"
|
||||||
|
version="0.0.0"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="javax.xml"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="1.3.4.v201005080400"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.apache.ant"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="1.7.1.v20100518-1145"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.core.contenttype"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.core.contenttype.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.core.jobs.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.core.runtime"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.core.runtime.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.app.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.common.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.ds.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.event.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.p2.director.app"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.p2.publisher"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.preferences.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.registry.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.security.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.equinox.util.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.osgi.services.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.osgi.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.osgi.util.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
|
||||||
|
</feature>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?pde version="3.6"?>
|
||||||
|
|
||||||
|
<target name="Adempiere Target Platform">
|
||||||
|
<locations>
|
||||||
|
<location path="${project_loc}" type="Directory"/>
|
||||||
|
<location includeAllPlatforms="true" includeMode="slicer" type="InstallableUnit">
|
||||||
|
<unit id="org.adempiere.bundles.external.feature.group" version="1.0.0.201009222137"/>
|
||||||
|
<unit id="org.adempiere.geminiweb.feature.group" version="1.1.0.RC1"/>
|
||||||
|
<repository location="http://hengsin.googlecode.com/hg/adempiere.osgi.dep-1.0.0/p2"/>
|
||||||
|
</location>
|
||||||
|
<location includeAllPlatforms="true" includeMode="slicer" type="InstallableUnit">
|
||||||
|
<unit id="org.eclipse.equinox.server.core.feature.group" version="1.0.0.v20100510-7K7QErDzbb9z-yqHb55T7I"/>
|
||||||
|
<unit id="org.eclipse.equinox.executable.feature.group" version="3.4.1.R36x_v20100823-7M7K7JF90dnJ-WLf3cf4yi"/>
|
||||||
|
<unit id="org.eclipse.equinox.p2.user.ui.feature.group" version="2.0.1.r361_v20100903-897HFZFFZRuSD2LMtVxyz0Vr"/>
|
||||||
|
<unit id="org.eclipse.equinox.server.p2.feature.group" version="1.0.0.v20100503-7x7IFGOFQ74dz0POCNUBjA6L"/>
|
||||||
|
<repository location="http://download.eclipse.org/releases/helios"/>
|
||||||
|
</location>
|
||||||
|
</locations>
|
||||||
|
</target>
|
Binary file not shown.
|
@ -0,0 +1,179 @@
|
||||||
|
Signature-Version: 1.0
|
||||||
|
SHA1-Digest-Manifest: DnymqoTvSz4gbC12HMrSKUQk34w=
|
||||||
|
Created-By: 1.6.0 (IBM Corporation)
|
||||||
|
SHA1-Digest-Manifest-Main-Attributes: T473SZ5WWmQktg3oaHggnJO/FTM=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-bcel.jar
|
||||||
|
SHA1-Digest: LOl+pgdc9a4HwZywWL7CEqCEvZs=
|
||||||
|
|
||||||
|
Name: etc/mmetrics-frames.xsl
|
||||||
|
SHA1-Digest: APiAPtADgoYGSwEquxQdQx5NN0A=
|
||||||
|
|
||||||
|
Name: bin/ant.bat
|
||||||
|
SHA1-Digest: VRSA9YOPmicxeIZD8LdYkqdUmEA=
|
||||||
|
|
||||||
|
Name: etc/tagdiff.xsl
|
||||||
|
SHA1-Digest: oQK6F+rUwsdxfJl58vbKAmtTs3Y=
|
||||||
|
|
||||||
|
Name: lib/ant.jar
|
||||||
|
SHA1-Digest: lQ3OziQI4mYf42vhZl5qK05euHQ=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-oro.jar
|
||||||
|
SHA1-Digest: 08O0J8DpA2CUYHKRuRY8E6d2FS0=
|
||||||
|
|
||||||
|
Name: lib/ant-jsch.jar
|
||||||
|
SHA1-Digest: 9REV6G1dh3UOS8ueh6rJVnXaBBE=
|
||||||
|
|
||||||
|
Name: about_files/LICENSE.dom.html
|
||||||
|
SHA1-Digest: xK0He1PkoQXdHC48ROEqZRNXTL4=
|
||||||
|
|
||||||
|
Name: etc/coverage-frames.xsl
|
||||||
|
SHA1-Digest: Lk7Vo06ABrH7brbJkP1hKRxLkMg=
|
||||||
|
|
||||||
|
Name: lib/ant-jdepend.jar
|
||||||
|
SHA1-Digest: 0jLeaOQiRnL1dq7dYpmBw3NIEPk=
|
||||||
|
|
||||||
|
Name: about_files/asl-v20.txt
|
||||||
|
SHA1-Digest: pJO0L/tUizs1vz2W9gV2VmGJsDs=
|
||||||
|
|
||||||
|
Name: lib/ant-nodeps.jar
|
||||||
|
SHA1-Digest: b3zl9yIdDVX5up8caMNncYIhOZk=
|
||||||
|
|
||||||
|
Name: META-INF/eclipse.inf
|
||||||
|
SHA1-Digest: Z+e4UrhAmTCBR1UpP/RqMf9OX00=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-regexp.jar
|
||||||
|
SHA1-Digest: bCJf89W6L5gZfecnoaC3GY5i9j0=
|
||||||
|
|
||||||
|
Name: bin/runant.pl
|
||||||
|
SHA1-Digest: 4EKNYCEcyO/SMqxm79fnts8/Q1c=
|
||||||
|
|
||||||
|
Name: lib/ant-weblogic.jar
|
||||||
|
SHA1-Digest: 1zEByTGSxJzTfSdx+joviPFLPgI=
|
||||||
|
|
||||||
|
Name: bin/envset.cmd
|
||||||
|
SHA1-Digest: anGgepI9TTUvD6W73h+kGQrc2d0=
|
||||||
|
|
||||||
|
Name: etc/checkstyle/checkstyle-text.xsl
|
||||||
|
SHA1-Digest: Jzub6NSrWxS9hYda+Wy/SP49SeI=
|
||||||
|
|
||||||
|
Name: lib/ant-junit.jar
|
||||||
|
SHA1-Digest: Asegl5TsYIaKAuGWD3RQGmYG9iw=
|
||||||
|
|
||||||
|
Name: bin/ant.cmd
|
||||||
|
SHA1-Digest: fKm5e7CiWr2UH61jbx6Yol3cQZo=
|
||||||
|
|
||||||
|
Name: etc/log.xsl
|
||||||
|
SHA1-Digest: 0HD61tw+M8q33hpPVPkjJJe4SDo=
|
||||||
|
|
||||||
|
Name: bin/antRun
|
||||||
|
SHA1-Digest: 3xz5zLVIT2QJnPskzZCOuX0LVnw=
|
||||||
|
|
||||||
|
Name: bin/runant.py
|
||||||
|
SHA1-Digest: uMviIJaN6y/k6xUbjXhmUd6TN8E=
|
||||||
|
|
||||||
|
Name: lib/ant-commons-logging.jar
|
||||||
|
SHA1-Digest: gPBkcASbXXb7sM6WCSbP3OnU0qw=
|
||||||
|
|
||||||
|
Name: lib/ant-swing.jar
|
||||||
|
SHA1-Digest: KeZdzozW8mPvLnnzlpJbnLFHC/k=
|
||||||
|
|
||||||
|
Name: etc/jdepend-frames.xsl
|
||||||
|
SHA1-Digest: OEsPHq3PIr185ocUtm81ULkmobs=
|
||||||
|
|
||||||
|
Name: etc/checkstyle/checkstyle-xdoc.xsl
|
||||||
|
SHA1-Digest: mfVMgdE+9JoC0hKc0Vc5f7pbe/c=
|
||||||
|
|
||||||
|
Name: etc/changelog.xsl
|
||||||
|
SHA1-Digest: 9ZFS8fHSvz42GLs2NDnqzLFo5G8=
|
||||||
|
|
||||||
|
Name: lib/ant-launcher.jar
|
||||||
|
SHA1-Digest: T5al3RPPs+cl2svqvzwRQyPua1M=
|
||||||
|
|
||||||
|
Name: etc/jdepend.xsl
|
||||||
|
SHA1-Digest: M6boZHWa9+JeDhCjXtq5Z9Y61dY=
|
||||||
|
|
||||||
|
Name: bin/runrc.cmd
|
||||||
|
SHA1-Digest: aq6+dBb+jdiXyrvDNmLIOzj21N8=
|
||||||
|
|
||||||
|
Name: lib/ant-jmf.jar
|
||||||
|
SHA1-Digest: rEt5vCSeiJhrDXhToAlqBYJUlpY=
|
||||||
|
|
||||||
|
Name: lib/ant-starteam.jar
|
||||||
|
SHA1-Digest: CC7k+9amtUmgE+nMSJswFn0gmdc=
|
||||||
|
|
||||||
|
Name: lib/ant-netrexx.jar
|
||||||
|
SHA1-Digest: 4MHr/zw5Cad5RNbITo3KEhTVU/g=
|
||||||
|
|
||||||
|
Name: plugin.properties
|
||||||
|
SHA1-Digest: g7K94ZyjaSU4QSVkjoTpYtl1vqE=
|
||||||
|
|
||||||
|
Name: lib/ant-jai.jar
|
||||||
|
SHA1-Digest: Hgz5UmlpuD4hOHTE+BQc7wzmHz0=
|
||||||
|
|
||||||
|
Name: lib/ant-trax.jar
|
||||||
|
SHA1-Digest: w6uurfjcZy7fOSYUPT2jG8svYVo=
|
||||||
|
|
||||||
|
Name: bin/antRun.bat
|
||||||
|
SHA1-Digest: KX8SW+sZ8gtQYr3boWRpl2DkWrE=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-bsf.jar
|
||||||
|
SHA1-Digest: usSlJG0vxeeqtxI/5lH/UPeH2fg=
|
||||||
|
|
||||||
|
Name: about_files/LICENSE.sax.txt
|
||||||
|
SHA1-Digest: CnKqzCUI0E0NUSlVIAfUd8gctxU=
|
||||||
|
|
||||||
|
Name: lib/ant-stylebook.jar
|
||||||
|
SHA1-Digest: FwmSqxPzrBPJXJ0X4oKHndncTnY=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-log4j.jar
|
||||||
|
SHA1-Digest: zcg372So4PVCkltPKzEiAFN3rA4=
|
||||||
|
|
||||||
|
Name: bin/ant
|
||||||
|
SHA1-Digest: bnS5vQF5wYnqXs8zr+3LORKIA0U=
|
||||||
|
|
||||||
|
Name: etc/checkstyle/checkstyle-frames.xsl
|
||||||
|
SHA1-Digest: cQKamOMX7Att9wW45aAohAWp3K0=
|
||||||
|
|
||||||
|
Name: bin/complete-ant-cmd.pl
|
||||||
|
SHA1-Digest: wXOPsOb8rPKKwt6rAb3XoXCwFgQ=
|
||||||
|
|
||||||
|
Name: about_files/NOTICE
|
||||||
|
SHA1-Digest: g5R8FDyNNir6o/tFVnDNSlcP+z0=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-resolver.jar
|
||||||
|
SHA1-Digest: NNj7gb1Enc2M8v/lMP9D4XO+8W0=
|
||||||
|
|
||||||
|
Name: etc/junit-frames.xsl
|
||||||
|
SHA1-Digest: 2hTCiaPp95X9ZjX8ZDwjvqwfT6U=
|
||||||
|
|
||||||
|
Name: etc/junit-noframes.xsl
|
||||||
|
SHA1-Digest: M4u7091ckN+zoCaRvjal1SDwJQE=
|
||||||
|
|
||||||
|
Name: lib/ant-antlr.jar
|
||||||
|
SHA1-Digest: pYDgw2hfdxjUG5938M9pyip9zoA=
|
||||||
|
|
||||||
|
Name: about.html
|
||||||
|
SHA1-Digest: tujWEJAt+/IKSC26IMuUh48ercA=
|
||||||
|
|
||||||
|
Name: etc/maudit-frames.xsl
|
||||||
|
SHA1-Digest: U8xxI3AoPSoVepSv0ZbfrARsTZY=
|
||||||
|
|
||||||
|
Name: etc/junit-frames-xalan1.xsl
|
||||||
|
SHA1-Digest: Bvmst1NiMllcc+sricG/3Eyszc0=
|
||||||
|
|
||||||
|
Name: lib/ant-commons-net.jar
|
||||||
|
SHA1-Digest: 054oC0sq2Zt1GCWm8zv3DATb8nQ=
|
||||||
|
|
||||||
|
Name: lib/ant-javamail.jar
|
||||||
|
SHA1-Digest: eJJcJGmsmr4JB5KfiZJRZcv6xLs=
|
||||||
|
|
||||||
|
Name: bin/lcp.bat
|
||||||
|
SHA1-Digest: EA5m2+HfGFLhb6ForQdjnlvl3cU=
|
||||||
|
|
||||||
|
Name: bin/antenv.cmd
|
||||||
|
SHA1-Digest: as5/uc6NFrw5Zqzjc5vZEWg6MsM=
|
||||||
|
|
||||||
|
Name: bin/antRun.pl
|
||||||
|
SHA1-Digest: Cw3hkFZ/7NbP7kPUGL/WM1n8EKk=
|
||||||
|
|
|
@ -0,0 +1,234 @@
|
||||||
|
Manifest-Version: 1.0
|
||||||
|
Bundle-ClassPath: lib/ant.jar,lib/ant-antlr.jar,lib/ant-apache-bcel.ja
|
||||||
|
r,lib/ant-apache-bsf.jar,lib/ant-apache-log4j.jar,lib/ant-apache-oro.
|
||||||
|
jar,lib/ant-apache-regexp.jar,lib/ant-apache-resolver.jar,lib/ant-com
|
||||||
|
mons-logging.jar,lib/ant-commons-net.jar,lib/ant-jai.jar,lib/ant-java
|
||||||
|
mail.jar,lib/ant-jdepend.jar,lib/ant-jmf.jar,lib/ant-jsch.jar,lib/ant
|
||||||
|
-junit.jar,lib/ant-launcher.jar,lib/ant-netrexx.jar,lib/ant-nodeps.ja
|
||||||
|
r,lib/ant-starteam.jar,lib/ant-stylebook.jar,lib/ant-swing.jar,lib/an
|
||||||
|
t-trax.jar,lib/ant-weblogic.jar
|
||||||
|
Bundle-Vendor: %providerName
|
||||||
|
Bundle-Localization: plugin
|
||||||
|
Bundle-RequiredExecutionEnvironment: J2SE-1.2
|
||||||
|
Bundle-Name: %pluginName
|
||||||
|
Bundle-SymbolicName: org.apache.ant
|
||||||
|
Require-Bundle: org.eclipse.osgi
|
||||||
|
Export-Package: images,org.apache.tools.ant,org.apache.tools.ant.dispa
|
||||||
|
tch,org.apache.tools.ant.filters,org.apache.tools.ant.filters.util,or
|
||||||
|
g.apache.tools.ant.helper,org.apache.tools.ant.input,org.apache.tools
|
||||||
|
.ant.launch,org.apache.tools.ant.listener,org.apache.tools.ant.loader
|
||||||
|
,org.apache.tools.ant.taskdefs,org.apache.tools.ant.taskdefs.compiler
|
||||||
|
s,org.apache.tools.ant.taskdefs.condition,org.apache.tools.ant.taskde
|
||||||
|
fs.cvslib,org.apache.tools.ant.taskdefs.email,org.apache.tools.ant.ta
|
||||||
|
skdefs.optional,org.apache.tools.ant.taskdefs.optional.ccm,org.apache
|
||||||
|
.tools.ant.taskdefs.optional.clearcase,org.apache.tools.ant.taskdefs.
|
||||||
|
optional.depend,org.apache.tools.ant.taskdefs.optional.depend.constan
|
||||||
|
tpool,org.apache.tools.ant.taskdefs.optional.dotnet,org.apache.tools.
|
||||||
|
ant.taskdefs.optional.ejb,org.apache.tools.ant.taskdefs.optional.exte
|
||||||
|
nsion,org.apache.tools.ant.taskdefs.optional.extension.resolvers,org.
|
||||||
|
apache.tools.ant.taskdefs.optional.i18n,org.apache.tools.ant.taskdefs
|
||||||
|
.optional.image,org.apache.tools.ant.taskdefs.optional.j2ee,org.apach
|
||||||
|
e.tools.ant.taskdefs.optional.javacc,org.apache.tools.ant.taskdefs.op
|
||||||
|
tional.javah,org.apache.tools.ant.taskdefs.optional.jdepend,org.apach
|
||||||
|
e.tools.ant.taskdefs.optional.jlink,org.apache.tools.ant.taskdefs.opt
|
||||||
|
ional.jsp,org.apache.tools.ant.taskdefs.optional.jsp.compilers,org.ap
|
||||||
|
ache.tools.ant.taskdefs.optional.junit,org.apache.tools.ant.taskdefs.
|
||||||
|
optional.junit.xsl,org.apache.tools.ant.taskdefs.optional.native2asci
|
||||||
|
i,org.apache.tools.ant.taskdefs.optional.net,org.apache.tools.ant.tas
|
||||||
|
kdefs.optional.perforce,org.apache.tools.ant.taskdefs.optional.pvcs,o
|
||||||
|
rg.apache.tools.ant.taskdefs.optional.scm,org.apache.tools.ant.taskde
|
||||||
|
fs.optional.script,org.apache.tools.ant.taskdefs.optional.sos,org.apa
|
||||||
|
che.tools.ant.taskdefs.optional.sound,org.apache.tools.ant.taskdefs.o
|
||||||
|
ptional.splash,org.apache.tools.ant.taskdefs.optional.ssh,org.apache.
|
||||||
|
tools.ant.taskdefs.optional.starteam,org.apache.tools.ant.taskdefs.op
|
||||||
|
tional.unix,org.apache.tools.ant.taskdefs.optional.vss,org.apache.too
|
||||||
|
ls.ant.taskdefs.optional.windows,org.apache.tools.ant.taskdefs.rmic,o
|
||||||
|
rg.apache.tools.ant.types,org.apache.tools.ant.types.conditions,org.a
|
||||||
|
pache.tools.ant.types.mappers,org.apache.tools.ant.types.optional,org
|
||||||
|
.apache.tools.ant.types.optional.depend,org.apache.tools.ant.types.op
|
||||||
|
tional.image,org.apache.tools.ant.types.resolver,org.apache.tools.ant
|
||||||
|
.types.resources,org.apache.tools.ant.types.resources.comparators,org
|
||||||
|
.apache.tools.ant.types.resources.selectors,org.apache.tools.ant.type
|
||||||
|
s.selectors,org.apache.tools.ant.types.selectors.modifiedselector,org
|
||||||
|
.apache.tools.ant.types.spi,org.apache.tools.ant.util,org.apache.tool
|
||||||
|
s.ant.util.depend,org.apache.tools.ant.util.depend.bcel,org.apache.to
|
||||||
|
ols.ant.util.facade,org.apache.tools.ant.util.java15,org.apache.tools
|
||||||
|
.ant.util.optional,org.apache.tools.ant.util.regexp,org.apache.tools.
|
||||||
|
bzip2,org.apache.tools.mail,org.apache.tools.tar,org.apache.tools.zip
|
||||||
|
Bundle-Version: 1.7.1.v20100518-1145
|
||||||
|
Bundle-ManifestVersion: 2
|
||||||
|
|
||||||
|
Name: lib/ant-apache-bcel.jar
|
||||||
|
SHA1-Digest: mL7ypH+XtKGLayV/7EGF6kwoYwI=
|
||||||
|
|
||||||
|
Name: etc/mmetrics-frames.xsl
|
||||||
|
SHA1-Digest: cQnziGYZC2FrO0zwFE92P1bP2v8=
|
||||||
|
|
||||||
|
Name: bin/ant.bat
|
||||||
|
SHA1-Digest: Rc2etgn1RATkrEL3NCa3Fs75Ov8=
|
||||||
|
|
||||||
|
Name: etc/tagdiff.xsl
|
||||||
|
SHA1-Digest: ddaegkBkww5CoIlRpSR8RDUI1bQ=
|
||||||
|
|
||||||
|
Name: lib/ant.jar
|
||||||
|
SHA1-Digest: QmGGhQi4COYG3u+KHGHVjvZA9hM=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-oro.jar
|
||||||
|
SHA1-Digest: 3mVzpEG3xmdgVi2+lwuMPKHKZfM=
|
||||||
|
|
||||||
|
Name: lib/ant-jsch.jar
|
||||||
|
SHA1-Digest: FmNWUeOpmyXmyH5K7WvBCfyprsE=
|
||||||
|
|
||||||
|
Name: about_files/LICENSE.dom.html
|
||||||
|
SHA1-Digest: 9F8cZaCgriCte0T6Mt5hAFumadk=
|
||||||
|
|
||||||
|
Name: etc/coverage-frames.xsl
|
||||||
|
SHA1-Digest: 5SE/NhPWEbqzGDGL58dwEbkhwRs=
|
||||||
|
|
||||||
|
Name: lib/ant-jdepend.jar
|
||||||
|
SHA1-Digest: juZ5ScBk7RdbT9kx1nq/TB1qix8=
|
||||||
|
|
||||||
|
Name: about_files/asl-v20.txt
|
||||||
|
SHA1-Digest: K4uBUimqimHkg/tLoFiLi2xJGJA=
|
||||||
|
|
||||||
|
Name: lib/ant-nodeps.jar
|
||||||
|
SHA1-Digest: stuzByOvnFqXXfMR1DOHMbURR4Y=
|
||||||
|
|
||||||
|
Name: META-INF/eclipse.inf
|
||||||
|
SHA1-Digest: u+F8j/GAE8tzrDry9+wT3Cvg81Y=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-regexp.jar
|
||||||
|
SHA1-Digest: bCOUGaWl76Yhuy0KPpq3Cl/w55g=
|
||||||
|
|
||||||
|
Name: bin/runant.pl
|
||||||
|
SHA1-Digest: tynYaGh8+BtWDsZ6PljZdoi+egU=
|
||||||
|
|
||||||
|
Name: lib/ant-weblogic.jar
|
||||||
|
SHA1-Digest: q/YjU1rB8u/dxjXcENxmEQ3pgXQ=
|
||||||
|
|
||||||
|
Name: etc/checkstyle/checkstyle-text.xsl
|
||||||
|
SHA1-Digest: CqSzAXEeeV20DtFpeujwjL9FEW8=
|
||||||
|
|
||||||
|
Name: bin/envset.cmd
|
||||||
|
SHA1-Digest: EJ+ljL5sbUQ8mWVn8V49XPBuAz0=
|
||||||
|
|
||||||
|
Name: bin/ant.cmd
|
||||||
|
SHA1-Digest: 4jPJI7nJO+v3oPpbi5GbrT7x9qk=
|
||||||
|
|
||||||
|
Name: lib/ant-junit.jar
|
||||||
|
SHA1-Digest: VPSxi0uuALZXXpJF4QFhkpUOpUI=
|
||||||
|
|
||||||
|
Name: bin/antRun
|
||||||
|
SHA1-Digest: S63QT5F5EI1BCpIj59nosT3lVTw=
|
||||||
|
|
||||||
|
Name: etc/log.xsl
|
||||||
|
SHA1-Digest: juv2H0VplMm4ri1rzgdOW0yCroc=
|
||||||
|
|
||||||
|
Name: bin/runant.py
|
||||||
|
SHA1-Digest: Kg3iFzRnZW6PVIFmbj7Eyuo72cM=
|
||||||
|
|
||||||
|
Name: lib/ant-commons-logging.jar
|
||||||
|
SHA1-Digest: NjlZah2crXobTrvv4OGCIMjO+8A=
|
||||||
|
|
||||||
|
Name: lib/ant-swing.jar
|
||||||
|
SHA1-Digest: XynrDWbhmRUIf9PM4gVJqgCaA5s=
|
||||||
|
|
||||||
|
Name: etc/jdepend-frames.xsl
|
||||||
|
SHA1-Digest: U2Bb6aMxgbEYqXkCm2sujeLP7Zo=
|
||||||
|
|
||||||
|
Name: etc/checkstyle/checkstyle-xdoc.xsl
|
||||||
|
SHA1-Digest: yL3TqCA4pc0daZXtXwAiCN6xHxI=
|
||||||
|
|
||||||
|
Name: etc/changelog.xsl
|
||||||
|
SHA1-Digest: 2EZZ+jSTt1TTlBYPN4vGUAX7cTQ=
|
||||||
|
|
||||||
|
Name: lib/ant-launcher.jar
|
||||||
|
SHA1-Digest: GHtlGif/wHyc2Emb1oDygUu5sOU=
|
||||||
|
|
||||||
|
Name: etc/jdepend.xsl
|
||||||
|
SHA1-Digest: 0rf14aLzhLsun24uUsXVVvkHM6I=
|
||||||
|
|
||||||
|
Name: bin/runrc.cmd
|
||||||
|
SHA1-Digest: eNo+cuYQicndcc56FVkRScD5w30=
|
||||||
|
|
||||||
|
Name: lib/ant-jmf.jar
|
||||||
|
SHA1-Digest: LkMJEvWekiNff2+40hzqUtHWv5Y=
|
||||||
|
|
||||||
|
Name: lib/ant-starteam.jar
|
||||||
|
SHA1-Digest: phxps48pSlCZmpwiyZY2cbk6yaw=
|
||||||
|
|
||||||
|
Name: lib/ant-netrexx.jar
|
||||||
|
SHA1-Digest: QWTo/YKGFWwaSuanXxbeyc3U2yQ=
|
||||||
|
|
||||||
|
Name: plugin.properties
|
||||||
|
SHA1-Digest: EM3JUl9D3jv9MhxxbdTWTUt6kbI=
|
||||||
|
|
||||||
|
Name: lib/ant-jai.jar
|
||||||
|
SHA1-Digest: EJ+iUjul2mZKti+TEgmuQ3kIh/o=
|
||||||
|
|
||||||
|
Name: lib/ant-trax.jar
|
||||||
|
SHA1-Digest: HZ8Fu0t4n4XH3pf7VeSW1i3ymAw=
|
||||||
|
|
||||||
|
Name: bin/antRun.bat
|
||||||
|
SHA1-Digest: zB9JbFFhlXTVgwaJlw61wNELj6k=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-bsf.jar
|
||||||
|
SHA1-Digest: 3m9VogNJMXiCF1ZkaeMRPdtM9OA=
|
||||||
|
|
||||||
|
Name: about_files/LICENSE.sax.txt
|
||||||
|
SHA1-Digest: uLnQn2qwT77aJ6MThuLeWz1I5ek=
|
||||||
|
|
||||||
|
Name: lib/ant-stylebook.jar
|
||||||
|
SHA1-Digest: E+Uxq8GjVBkGmc4TZ3JQh4MZeRw=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-log4j.jar
|
||||||
|
SHA1-Digest: 35KkJkHQuFhTpd0mbJemrVVJCQI=
|
||||||
|
|
||||||
|
Name: bin/ant
|
||||||
|
SHA1-Digest: jK7w10Hy+BIiSimUAhjgizdaBuY=
|
||||||
|
|
||||||
|
Name: etc/checkstyle/checkstyle-frames.xsl
|
||||||
|
SHA1-Digest: 5KYg/jQq+iuWKS5gF1qX37F+UX0=
|
||||||
|
|
||||||
|
Name: bin/complete-ant-cmd.pl
|
||||||
|
SHA1-Digest: F1mrSua1xk98goAA1YvtOoJNiuw=
|
||||||
|
|
||||||
|
Name: about_files/NOTICE
|
||||||
|
SHA1-Digest: v3XrGNGv2sQGqBe+ObJZnq9915g=
|
||||||
|
|
||||||
|
Name: lib/ant-apache-resolver.jar
|
||||||
|
SHA1-Digest: fzM5Jwsbw+H2XUPO5uxQGgO9mRA=
|
||||||
|
|
||||||
|
Name: etc/junit-frames.xsl
|
||||||
|
SHA1-Digest: XIcHcYoM8I5hzTkhdiy5iskupIM=
|
||||||
|
|
||||||
|
Name: etc/junit-noframes.xsl
|
||||||
|
SHA1-Digest: zmgmTYDnXS0QZvMd3wUarjPR7aE=
|
||||||
|
|
||||||
|
Name: lib/ant-antlr.jar
|
||||||
|
SHA1-Digest: Kagxm9lkBtXTXWMRKDWn52KZeTE=
|
||||||
|
|
||||||
|
Name: about.html
|
||||||
|
SHA1-Digest: cPPs9diR9VPNDzWrCs1FLNOdJEo=
|
||||||
|
|
||||||
|
Name: etc/maudit-frames.xsl
|
||||||
|
SHA1-Digest: 1oML7OYqWjV+hPKu/ItdzrAFGcA=
|
||||||
|
|
||||||
|
Name: etc/junit-frames-xalan1.xsl
|
||||||
|
SHA1-Digest: ME/2vW22HRXG87EwVJ9LFfkfyEI=
|
||||||
|
|
||||||
|
Name: lib/ant-commons-net.jar
|
||||||
|
SHA1-Digest: Rg+mKr8hSVibDLdQwjnhGg+oMuA=
|
||||||
|
|
||||||
|
Name: lib/ant-javamail.jar
|
||||||
|
SHA1-Digest: 2b0KzqoBPtuNEHHwW3KXqLGLby8=
|
||||||
|
|
||||||
|
Name: bin/lcp.bat
|
||||||
|
SHA1-Digest: eX7ICcBsanATsaEDkn5+oTA4QaQ=
|
||||||
|
|
||||||
|
Name: bin/antenv.cmd
|
||||||
|
SHA1-Digest: s2zvcJEs2E2x6ckfXZoGxx1OF1Y=
|
||||||
|
|
||||||
|
Name: bin/antRun.pl
|
||||||
|
SHA1-Digest: mynp1agPByxojQUKZqlVZkXZSHY=
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#Processed using Jarprocessor
|
||||||
|
jarprocessor.exclude.children.sign = true
|
||||||
|
pack200.args = -E4
|
||||||
|
pack200.conditioned = true
|
|
@ -0,0 +1,62 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||||
|
<title>About</title>
|
||||||
|
</head>
|
||||||
|
<body lang="EN-US">
|
||||||
|
<h2>About This Content</h2>
|
||||||
|
|
||||||
|
<p>July 14, 2008</p>
|
||||||
|
<h3>License</h3>
|
||||||
|
|
||||||
|
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||||
|
indicated below, the Content is provided to you under the terms and conditions of the
|
||||||
|
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||||
|
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||||
|
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||||
|
|
||||||
|
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||||
|
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||||
|
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||||
|
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||||
|
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||||
|
and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
|
||||||
|
|
||||||
|
<h3>Third Party Content</h3>
|
||||||
|
|
||||||
|
<p>The Content includes items that have been sourced from third parties as set out below. If you
|
||||||
|
did not receive this Content directly from the Eclipse Foundation, the following is provided
|
||||||
|
for informational purposes only, and you should look to the Redistributor’s license for
|
||||||
|
terms and conditions of use.</p>
|
||||||
|
|
||||||
|
<h4>Ant 1.7.1</h4>
|
||||||
|
<p>The plug-in includes software developed by The Apache Software Foundation as part of the Ant project.</p>
|
||||||
|
|
||||||
|
<p>The Ant binary code in ant.jar and the scripts ant, ant.bat, ant.cmd, antenv.cmd, antRun, antRun.bat, antRun.pl, complete-ant-cmd.pl, envset.cmd, lcp.bat, runant.pl, runant.py and runrc.cmd are included with the plug-in with no modifications.
|
||||||
|
The Ant source code is located in the zip files named ant-*src.zip.</p>
|
||||||
|
|
||||||
|
<p>Your use of the Ant code and the scripts is subject to the terms and conditions of the Apache License, Version 2.0. A copy of the license is contained
|
||||||
|
in the file <a href="about_files/asl-v20.txt" target="_blank">asl-v20.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
|
||||||
|
|
||||||
|
<p>The names "Ant" and "Apache Software Foundation" must not be used to endorse or promote products derived from this
|
||||||
|
software without prior written permission. For written permission, please contact <a href="mailto:apache@apache.org">apache@apache.org</a>.</p>
|
||||||
|
|
||||||
|
<p>The Apache attribution <a href="about_files/NOTICE" target="_blank">NOTICE</a> file is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
|
||||||
|
|
||||||
|
<p>Ant includes the following software:</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<h4>DOM</h4>
|
||||||
|
<p>DOM is developed by the World Wide Web Consortium. Your use of DOM is subject to the terms and conditions of the license found in the
|
||||||
|
file <a href="about_files/LICENSE.dom.html" target="_blank">LICENSE.dom.html</a> which is included with this plug-in and can also be found at
|
||||||
|
<a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720" target="_blank">http://www.w3.org/Consortium/Legal/copyright-software-19980720</a>.</p>
|
||||||
|
|
||||||
|
<h4>SAX</h4>
|
||||||
|
|
||||||
|
<p>SAX is developed by the SAX project (<a href="http://www.saxproject.org" target="_blank">http://www.saxproject.org</a>). Your use of SAX is subject to the
|
||||||
|
terms and conditions of the license found in the file <a href="about_files/LICENSE.sax.txt" target="_blank">LICENSE.sax.txt</a> which is included with this plug-in.</p>
|
||||||
|
</blockquote>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,82 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>License</title>
|
||||||
|
<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
|
||||||
|
</head>
|
||||||
|
<body lang="EN-US">
|
||||||
|
<p>This license came from:<br>
|
||||||
|
<a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">http://www.w3.org/Consortium/Legal/copyright-software-19980720</a></p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
W3C® SOFTWARE NOTICE AND LICENSE<br>
|
||||||
|
Copyright © 1994-2001 <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of Technology</a>,
|
||||||
|
<a href="http://www.inria.fr/">Institut National de Recherche en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.<br>
|
||||||
|
<a href="http://www.w3.org/Consortium/Legal/">http://www.w3.org/Consortium/Legal/</a></p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This W3C work (including software, documents, or other related<br>
|
||||||
|
items) is being provided by the copyright holders under the<br>
|
||||||
|
following license. By obtaining, using and/or copying this work,<br>
|
||||||
|
you (the licensee) agree that you have read, understood, and will<br>
|
||||||
|
comply with the following terms and conditions:<br>
|
||||||
|
Permission to use, copy, modify, and distribute this software<br>
|
||||||
|
and its documentation, with or without modification, for any<br>
|
||||||
|
purpose and without fee or royalty is hereby granted, provided that<br>
|
||||||
|
you include the following on ALL copies of the software and<br>
|
||||||
|
documentation or portions thereof, including modifications, that<br>
|
||||||
|
you make:</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The full text of this NOTICE in a location viewable to users of<br>
|
||||||
|
the redistributed or derivative work.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Any pre-existing intellectual property disclaimers, notices, or<br>
|
||||||
|
terms and conditions. If none exist, a short notice of the<br>
|
||||||
|
following form (hypertext is preferred, text is permitted) should<br>
|
||||||
|
be used within the body of any redistributed or derivative code:<br>
|
||||||
|
"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of<br>
|
||||||
|
Technology, Institut National de<br>
|
||||||
|
Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.<br>
|
||||||
|
http://www.w3.org/Consortium/Legal/"</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Notice of any changes or modifications to the W3C files,<br>
|
||||||
|
including the date changes were made. (We recommend you provide <br>
|
||||||
|
URIs to the location from which the code is derived.)</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND<br>
|
||||||
|
COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR<br>
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF<br>
|
||||||
|
MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE<br>
|
||||||
|
USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD<br>
|
||||||
|
PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.<br>
|
||||||
|
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,<br>
|
||||||
|
SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE<br>
|
||||||
|
SOFTWARE OR DOCUMENTATION.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The name and trademarks of copyright holders may NOT be used in<br>
|
||||||
|
advertising or publicity pertaining to the software without<br>
|
||||||
|
specific, written prior permission. Title to copyright in this<br>
|
||||||
|
software and any associated documentation will at all times remain<br>
|
||||||
|
with copyright holders.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
____________________________________<br>
|
||||||
|
This formulation of W3C's notice and license became active on<br>
|
||||||
|
August 14 1998 so as to improve compatibility with GPL. This<br>
|
||||||
|
version ensures that W3C software licensing terms are no more<br>
|
||||||
|
restrictive than GPL and consequently W3C software may be<br>
|
||||||
|
distributed in GPL packages. See the older formulation for the<br>
|
||||||
|
policy prior to this date. Please see our Copyright FAQ for common <br>
|
||||||
|
questions about using materials from<br>
|
||||||
|
our site, including specific terms and conditions for packages like<br>
|
||||||
|
libwww, Amaya, and Jigsaw. <br>
|
||||||
|
Other questions about this notice can be<br>
|
||||||
|
directed to site-policy@w3.org.</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,20 @@
|
||||||
|
This license came from: http://www.megginson.com/SAX/copying.html
|
||||||
|
However please note future versions of SAX may be covered
|
||||||
|
under http://saxproject.org/?selected=pd
|
||||||
|
|
||||||
|
|
||||||
|
This page is now out of date -- see the new SAX site at
|
||||||
|
http://www.saxproject.org/ for more up-to-date
|
||||||
|
releases and other information. Please change your bookmarks.
|
||||||
|
|
||||||
|
|
||||||
|
SAX2 is Free!
|
||||||
|
|
||||||
|
I hereby abandon any property rights to SAX 2.0 (the Simple API for
|
||||||
|
XML), and release all of the SAX 2.0 source code, compiled code, and
|
||||||
|
documentation contained in this distribution into the Public Domain.
|
||||||
|
SAX comes with NO WARRANTY or guarantee of fitness for any
|
||||||
|
purpose.
|
||||||
|
|
||||||
|
David Megginson, david@megginson.com
|
||||||
|
2000-05-05
|
|
@ -0,0 +1,26 @@
|
||||||
|
=========================================================================
|
||||||
|
== NOTICE file corresponding to the section 4 d of ==
|
||||||
|
== the Apache License, Version 2.0, ==
|
||||||
|
== in this case for the Apache Ant distribution. ==
|
||||||
|
=========================================================================
|
||||||
|
|
||||||
|
Apache Ant
|
||||||
|
Copyright 1999-2008 The Apache Software Foundation
|
||||||
|
|
||||||
|
This product includes software developed by
|
||||||
|
The Apache Software Foundation (http://www.apache.org/).
|
||||||
|
|
||||||
|
This product includes also software developed by :
|
||||||
|
- the W3C consortium (http://www.w3c.org) ,
|
||||||
|
- the SAX project (http://www.saxproject.org)
|
||||||
|
|
||||||
|
The <sync> task is based on code Copyright (c) 2002, Landmark
|
||||||
|
Graphics Corp that has been kindly donated to the Apache Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
Portions of this software were originally based on the following:
|
||||||
|
- software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
|
||||||
|
- software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
|
||||||
|
- voluntary contributions made by Paul Eng on behalf of the
|
||||||
|
Apache Software Foundation that were originally developed at iClick, Inc.,
|
||||||
|
software copyright (c) 1999.
|
|
@ -0,0 +1,202 @@
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
|
@ -0,0 +1,326 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Extract launch and ant arguments, (see details below).
|
||||||
|
ant_exec_args=
|
||||||
|
no_config=false
|
||||||
|
use_jikes_default=false
|
||||||
|
ant_exec_debug=false
|
||||||
|
show_help=false
|
||||||
|
for arg in "$@" ; do
|
||||||
|
if [ "$arg" = "--noconfig" ] ; then
|
||||||
|
no_config=true
|
||||||
|
elif [ "$arg" = "--usejikes" ] ; then
|
||||||
|
use_jikes_default=true
|
||||||
|
elif [ "$arg" = "--execdebug" ] ; then
|
||||||
|
ant_exec_debug=true
|
||||||
|
elif [ my"$arg" = my"--h" -o my"$arg" = my"--help" ] ; then
|
||||||
|
show_help=true
|
||||||
|
ant_exec_args="$ant_exec_args -h"
|
||||||
|
else
|
||||||
|
if [ my"$arg" = my"-h" -o my"$arg" = my"-help" ] ; then
|
||||||
|
show_help=true
|
||||||
|
fi
|
||||||
|
ant_exec_args="$ant_exec_args \"$arg\""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Source/default ant configuration
|
||||||
|
if $no_config ; then
|
||||||
|
rpm_mode=false
|
||||||
|
usejikes=$use_jikes_default
|
||||||
|
else
|
||||||
|
# load system-wide ant configuration (ONLY if ANT_HOME has NOT been set)
|
||||||
|
if [ -z "$ANT_HOME" -o "$ANT_HOME" = "/usr/share/ant" ]; then
|
||||||
|
if [ -f "/etc/ant.conf" ] ; then
|
||||||
|
. /etc/ant.conf
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# load user ant configuration
|
||||||
|
if [ -f "$HOME/.ant/ant.conf" ] ; then
|
||||||
|
. $HOME/.ant/ant.conf
|
||||||
|
fi
|
||||||
|
if [ -f "$HOME/.antrc" ] ; then
|
||||||
|
. "$HOME/.antrc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# provide default configuration values
|
||||||
|
if [ -z "$rpm_mode" ] ; then
|
||||||
|
rpm_mode=false
|
||||||
|
fi
|
||||||
|
if [ -z "$usejikes" ] ; then
|
||||||
|
usejikes=$use_jikes_default
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setup Java environment in rpm mode
|
||||||
|
if $rpm_mode ; then
|
||||||
|
if [ -f /usr/share/java-utils/java-functions ] ; then
|
||||||
|
. /usr/share/java-utils/java-functions
|
||||||
|
set_jvm
|
||||||
|
set_javacmd
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# OS specific support. $var _must_ be set to either true or false.
|
||||||
|
cygwin=false;
|
||||||
|
darwin=false;
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN*) cygwin=true ;;
|
||||||
|
Darwin*) darwin=true
|
||||||
|
if [ -z "$JAVA_HOME" ] ; then
|
||||||
|
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
|
||||||
|
## resolve links - $0 may be a link to ant's home
|
||||||
|
PRG="$0"
|
||||||
|
progname=`basename "$0"`
|
||||||
|
|
||||||
|
# need this for relative symlinks
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`"/$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
ANT_HOME=`dirname "$PRG"`/..
|
||||||
|
|
||||||
|
# make it fully qualified
|
||||||
|
ANT_HOME=`cd "$ANT_HOME" > /dev/null && pwd`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||||
|
if $cygwin ; then
|
||||||
|
[ -n "$ANT_HOME" ] &&
|
||||||
|
ANT_HOME=`cygpath --unix "$ANT_HOME"`
|
||||||
|
[ -n "$JAVA_HOME" ] &&
|
||||||
|
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set ANT_LIB location
|
||||||
|
ANT_LIB="${ANT_HOME}/lib"
|
||||||
|
|
||||||
|
if [ -z "$JAVACMD" ] ; then
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||||
|
elif [ -x "$JAVA_HOME/jre/bin/java" ] ; then
|
||||||
|
JAVACMD="$JAVA_HOME/jre/bin/java"
|
||||||
|
else
|
||||||
|
JAVACMD="$JAVA_HOME/bin/java"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD=`which java 2> /dev/null `
|
||||||
|
if [ -z "$JAVACMD" ] ; then
|
||||||
|
JAVACMD=java
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
echo "Error: JAVA_HOME is not defined correctly."
|
||||||
|
echo " We cannot execute $JAVACMD"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build local classpath using just the launcher in non-rpm mode or
|
||||||
|
# use the Jpackage helper in rpm mode with basic and default jars
|
||||||
|
# specified in the ant.conf configuration. Because the launcher is
|
||||||
|
# used, libraries linked in ANT_HOME/lib will also be included, but this
|
||||||
|
# is discouraged as it is not java-version safe. A user should
|
||||||
|
# request optional jars and their dependencies via the OPT_JAR_LIST
|
||||||
|
# variable
|
||||||
|
if $rpm_mode && [ -x /usr/bin/build-classpath ] ; then
|
||||||
|
LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
|
||||||
|
|
||||||
|
# If no optional jars have been specified then build the default list
|
||||||
|
if [ -z "$OPT_JAR_LIST" ] ; then
|
||||||
|
for file in /etc/ant.d/*; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
case "$file" in
|
||||||
|
*~) ;;
|
||||||
|
*#*) ;;
|
||||||
|
*.rpmsave) ;;
|
||||||
|
*.rpmnew) ;;
|
||||||
|
*)
|
||||||
|
for dep in `cat "$file"`; do
|
||||||
|
case "$OPT_JAR_LIST" in
|
||||||
|
*"$dep"*) ;;
|
||||||
|
*) OPT_JAR_LIST="$OPT_JAR_LIST${OPT_JAR_LIST:+ }$dep"
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the user requested to try to add some other jars to the classpath
|
||||||
|
if [ -n "$OPT_JAR_LIST" ] ; then
|
||||||
|
_OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)"
|
||||||
|
if [ -n "$_OPTCLASSPATH" ] ; then
|
||||||
|
LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Explicitly add javac path to classpath, assume JAVA_HOME set
|
||||||
|
# properly in rpm mode
|
||||||
|
if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
|
||||||
|
LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
|
||||||
|
fi
|
||||||
|
if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
|
||||||
|
LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
|
||||||
|
# user CLASSPATH first and ant-found jars after.
|
||||||
|
# In that case, the user CLASSPATH will override ant-found jars
|
||||||
|
#
|
||||||
|
# if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
|
||||||
|
# with ant-found jars first and user CLASSPATH after
|
||||||
|
if [ -n "$CLASSPATH" ] ; then
|
||||||
|
# merge local and specified classpath
|
||||||
|
if [ -z "$LOCALCLASSPATH" ] ; then
|
||||||
|
LOCALCLASSPATH="$CLASSPATH"
|
||||||
|
elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
|
||||||
|
LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
|
||||||
|
else
|
||||||
|
LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove class path from launcher -cp option
|
||||||
|
CLASSPATH=""
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# not using rpm_mode; use launcher to determine classpaths
|
||||||
|
if [ -z "$LOCALCLASSPATH" ] ; then
|
||||||
|
LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
|
||||||
|
else
|
||||||
|
LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
# OSX hack to make Ant work with jikes
|
||||||
|
if $darwin ; then
|
||||||
|
OSXHACK="${JAVA_HOME}/../Classes"
|
||||||
|
if [ -d "${OSXHACK}" ] ; then
|
||||||
|
for i in "${OSXHACK}"/*.jar
|
||||||
|
do
|
||||||
|
JIKESPATH="$JIKESPATH:$i"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Allow Jikes support (off by default)
|
||||||
|
if $usejikes; then
|
||||||
|
ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, switch paths to appropriate format before running java
|
||||||
|
# For PATHs convert to unix format first, then to windows format to ensure
|
||||||
|
# both formats are supported. Probably this will fail on directories with ;
|
||||||
|
# in the name in the path. Let's assume that paths containing ; are more
|
||||||
|
# rare than windows style paths on cygwin.
|
||||||
|
if $cygwin; then
|
||||||
|
if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
|
||||||
|
format=mixed
|
||||||
|
else
|
||||||
|
format=windows
|
||||||
|
fi
|
||||||
|
ANT_HOME=`cygpath --$format "$ANT_HOME"`
|
||||||
|
ANT_LIB=`cygpath --$format "$ANT_LIB"`
|
||||||
|
JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
|
||||||
|
LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
|
||||||
|
LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
|
||||||
|
if [ -n "$CLASSPATH" ] ; then
|
||||||
|
CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
|
||||||
|
CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
|
||||||
|
fi
|
||||||
|
CYGHOME=`cygpath --$format "$HOME"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Show script help if requested
|
||||||
|
if $show_help ; then
|
||||||
|
echo $0 '[script options] [options] [target [target2 [target3] ..]]'
|
||||||
|
echo 'Script Options:'
|
||||||
|
echo ' --help, --h print this message and ant help'
|
||||||
|
echo ' --noconfig suppress sourcing of /etc/ant.conf,'
|
||||||
|
echo ' $HOME/.ant/ant.conf, and $HOME/.antrc'
|
||||||
|
echo ' configuration files'
|
||||||
|
echo ' --usejikes enable use of jikes by default, unless'
|
||||||
|
echo ' set explicitly in configuration files'
|
||||||
|
echo ' --execdebug print ant exec line generated by this'
|
||||||
|
echo ' launch script'
|
||||||
|
echo ' '
|
||||||
|
fi
|
||||||
|
# add a second backslash to variables terminated by a backslash under cygwin
|
||||||
|
if $cygwin; then
|
||||||
|
case "$ANT_HOME" in
|
||||||
|
*\\ )
|
||||||
|
ANT_HOME="$ANT_HOME\\"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$CYGHOME" in
|
||||||
|
*\\ )
|
||||||
|
CYGHOME="$CYGHOME\\"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$JIKESPATH" in
|
||||||
|
*\\ )
|
||||||
|
JIKESPATH="$JIKESPATH\\"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$LOCALCLASSPATH" in
|
||||||
|
*\\ )
|
||||||
|
LOCALCLASSPATH="$LOCALCLASSPATH\\"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$CLASSPATH" in
|
||||||
|
*\\ )
|
||||||
|
CLASSPATH="$CLASSPATH\\"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
# Execute ant using eval/exec to preserve spaces in paths,
|
||||||
|
# java options, and ant args
|
||||||
|
ant_sys_opts=
|
||||||
|
if [ -n "$CYGHOME" ]; then
|
||||||
|
if [ -n "$JIKESPATH" ]; then
|
||||||
|
ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
|
||||||
|
else
|
||||||
|
ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -n "$JIKESPATH" ]; then
|
||||||
|
ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"$CLASSPATH\" $ant_exec_args"
|
||||||
|
if $ant_exec_debug ; then
|
||||||
|
echo $ant_exec_command
|
||||||
|
fi
|
||||||
|
eval $ant_exec_command
|
|
@ -0,0 +1,226 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
REM Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
REM contributor license agreements. See the NOTICE file distributed with
|
||||||
|
REM this work for additional information regarding copyright ownership.
|
||||||
|
REM The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
REM (the "License"); you may not use this file except in compliance with
|
||||||
|
REM the License. You may obtain a copy of the License at
|
||||||
|
REM
|
||||||
|
REM http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
REM
|
||||||
|
REM Unless required by applicable law or agreed to in writing, software
|
||||||
|
REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
REM See the License for the specific language governing permissions and
|
||||||
|
REM limitations under the License.
|
||||||
|
|
||||||
|
REM This is an inordinately troublesome piece of code, particularly because it
|
||||||
|
REM tries to work on both Win9x and WinNT-based systems. If we could abandon '9x
|
||||||
|
REM support, things would be much easier, but sadly, it is not yet time.
|
||||||
|
REM Be cautious about editing this, and only add WinNT specific stuff in code that
|
||||||
|
REM only runs on WinNT.
|
||||||
|
|
||||||
|
if "%HOME%"=="" goto homeDrivePathPre
|
||||||
|
if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"
|
||||||
|
|
||||||
|
:homeDrivePathPre
|
||||||
|
if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePre
|
||||||
|
if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePre
|
||||||
|
if exist "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat"
|
||||||
|
|
||||||
|
:userProfilePre
|
||||||
|
if "%USERPROFILE%"=="" goto alpha
|
||||||
|
if "%USERPROFILE%"=="%HOME%" goto alpha
|
||||||
|
if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto alpha
|
||||||
|
if exist "%USERPROFILE%\antrc_pre.bat" call "%USERPROFILE%\antrc_pre.bat"
|
||||||
|
|
||||||
|
:alpha
|
||||||
|
|
||||||
|
if "%OS%"=="Windows_NT" @setlocal
|
||||||
|
if "%OS%"=="WINNT" @setlocal
|
||||||
|
|
||||||
|
if "%ANT_HOME%"=="" goto setDefaultAntHome
|
||||||
|
|
||||||
|
:stripAntHome
|
||||||
|
if not _%ANT_HOME:~-1%==_\ goto checkClasspath
|
||||||
|
set ANT_HOME=%ANT_HOME:~0,-1%
|
||||||
|
goto stripAntHome
|
||||||
|
|
||||||
|
:setDefaultAntHome
|
||||||
|
rem %~dp0 is expanded pathname of the current script under NT
|
||||||
|
set ANT_HOME=%~dp0..
|
||||||
|
|
||||||
|
:checkClasspath
|
||||||
|
set _USE_CLASSPATH=yes
|
||||||
|
rem CLASSPATH must not be used if it is equal to ""
|
||||||
|
if "%CLASSPATH%"=="""" set _USE_CLASSPATH=no
|
||||||
|
if "%CLASSPATH%"=="" set _USE_CLASSPATH=no
|
||||||
|
|
||||||
|
rem Slurp the command line arguments. This loop allows for an unlimited number
|
||||||
|
rem of arguments (up to the command line limit, anyway).
|
||||||
|
set ANT_CMD_LINE_ARGS=%1
|
||||||
|
if ""%1""=="""" goto doneStart
|
||||||
|
shift
|
||||||
|
:setupArgs
|
||||||
|
if ""%1""=="""" goto doneStart
|
||||||
|
if ""%1""==""-noclasspath"" goto clearclasspath
|
||||||
|
set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
|
||||||
|
shift
|
||||||
|
goto setupArgs
|
||||||
|
|
||||||
|
rem here is there is a -noclasspath in the options
|
||||||
|
:clearclasspath
|
||||||
|
set _USE_CLASSPATH=no
|
||||||
|
shift
|
||||||
|
goto setupArgs
|
||||||
|
|
||||||
|
rem This label provides a place for the argument list loop to break out
|
||||||
|
rem and for NT handling to skip to.
|
||||||
|
|
||||||
|
:doneStart
|
||||||
|
|
||||||
|
if _USE_CLASSPATH==no goto findAntHome
|
||||||
|
|
||||||
|
:stripClasspath
|
||||||
|
if not _%CLASSPATH:~-1%==_\ goto findAntHome
|
||||||
|
set CLASSPATH=%CLASSPATH:~0,-1%
|
||||||
|
goto stripClasspath
|
||||||
|
|
||||||
|
:findAntHome
|
||||||
|
rem find ANT_HOME if it does not exist due to either an invalid value passed
|
||||||
|
rem by the user or the %0 problem on Windows 9x
|
||||||
|
if exist "%ANT_HOME%\lib\ant.jar" goto checkJava
|
||||||
|
|
||||||
|
rem check for ant in Program Files
|
||||||
|
if not exist "%ProgramFiles%\ant" goto checkSystemDrive
|
||||||
|
set ANT_HOME=%ProgramFiles%\ant
|
||||||
|
goto checkJava
|
||||||
|
|
||||||
|
:checkSystemDrive
|
||||||
|
rem check for ant in root directory of system drive
|
||||||
|
if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive
|
||||||
|
set ANT_HOME=%SystemDrive%\ant
|
||||||
|
goto checkJava
|
||||||
|
|
||||||
|
:checkCDrive
|
||||||
|
rem check for ant in C:\ant for Win9X users
|
||||||
|
if not exist C:\ant\lib\ant.jar goto noAntHome
|
||||||
|
set ANT_HOME=C:\ant
|
||||||
|
goto checkJava
|
||||||
|
|
||||||
|
:noAntHome
|
||||||
|
echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:checkJava
|
||||||
|
set _JAVACMD=%JAVACMD%
|
||||||
|
|
||||||
|
if "%JAVA_HOME%" == "" goto noJavaHome
|
||||||
|
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
|
||||||
|
if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe
|
||||||
|
goto checkJikes
|
||||||
|
|
||||||
|
:noJavaHome
|
||||||
|
if "%_JAVACMD%" == "" set _JAVACMD=java.exe
|
||||||
|
|
||||||
|
:checkJikes
|
||||||
|
if not "%JIKESPATH%"=="" goto runAntWithJikes
|
||||||
|
|
||||||
|
:runAnt
|
||||||
|
if "%_USE_CLASSPATH%"=="no" goto runAntNoClasspath
|
||||||
|
:runAntWithClasspath
|
||||||
|
"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
|
||||||
|
rem Check the error code of the Ant build
|
||||||
|
if not "%OS%"=="Windows_NT" goto onError
|
||||||
|
set ANT_ERROR=%ERRORLEVEL%
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:runAntNoClasspath
|
||||||
|
"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
|
||||||
|
rem Check the error code of the Ant build
|
||||||
|
if not "%OS%"=="Windows_NT" goto onError
|
||||||
|
set ANT_ERROR=%ERRORLEVEL%
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:runAntWithJikes
|
||||||
|
|
||||||
|
if not _%JIKESPATH:~-1%==_\ goto checkJikesAndClasspath
|
||||||
|
set JIKESPATH=%JIKESPATH:~0,-1%
|
||||||
|
goto runAntWithJikes
|
||||||
|
|
||||||
|
:checkJikesAndClasspath
|
||||||
|
|
||||||
|
if "%_USE_CLASSPATH%"=="no" goto runAntWithJikesNoClasspath
|
||||||
|
|
||||||
|
:runAntWithJikesAndClasspath
|
||||||
|
"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
|
||||||
|
rem Check the error code of the Ant build
|
||||||
|
if not "%OS%"=="Windows_NT" goto onError
|
||||||
|
set ANT_ERROR=%ERRORLEVEL%
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:runAntWithJikesNoClasspath
|
||||||
|
"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
|
||||||
|
rem Check the error code of the Ant build
|
||||||
|
if not "%OS%"=="Windows_NT" goto onError
|
||||||
|
set ANT_ERROR=%ERRORLEVEL%
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:onError
|
||||||
|
rem Windows 9x way of checking the error code. It matches via brute force.
|
||||||
|
for %%i in (1 10 100) do set err%%i=
|
||||||
|
for %%i in (0 1 2) do if errorlevel %%i00 set err100=%%i
|
||||||
|
if %err100%==2 goto onError200
|
||||||
|
if %err100%==0 set err100=
|
||||||
|
for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%%i0 set err10=%%i
|
||||||
|
if "%err100%"=="" if %err10%==0 set err10=
|
||||||
|
:onError1
|
||||||
|
for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%err10%%%i set err1=%%i
|
||||||
|
goto onErrorEnd
|
||||||
|
:onError200
|
||||||
|
for %%i in (0 1 2 3 4 5) do if errorlevel 2%%i0 set err10=%%i
|
||||||
|
if err10==5 for %%i in (0 1 2 3 4 5) do if errorlevel 25%%i set err1=%%i
|
||||||
|
if not err10==5 goto onError1
|
||||||
|
:onErrorEnd
|
||||||
|
set ANT_ERROR=%err100%%err10%%err1%
|
||||||
|
for %%i in (1 10 100) do set err%%i=
|
||||||
|
|
||||||
|
:end
|
||||||
|
rem bug ID 32069: resetting an undefined env variable changes the errorlevel.
|
||||||
|
if not "%_JAVACMD%"=="" set _JAVACMD=
|
||||||
|
if not "%_ANT_CMD_LINE_ARGS%"=="" set ANT_CMD_LINE_ARGS=
|
||||||
|
|
||||||
|
if "%ANT_ERROR%"=="0" goto mainEnd
|
||||||
|
|
||||||
|
rem Set the return code if we are not in NT. We can only set
|
||||||
|
rem a value of 1, but it's better than nothing.
|
||||||
|
if not "%OS%"=="Windows_NT" echo 1 > nul | choice /n /c:1
|
||||||
|
|
||||||
|
rem Set the ERRORLEVEL if we are running NT.
|
||||||
|
if "%OS%"=="Windows_NT" color 00
|
||||||
|
|
||||||
|
goto omega
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
|
||||||
|
rem If there were no errors, we run the post script.
|
||||||
|
if "%OS%"=="Windows_NT" @endlocal
|
||||||
|
if "%OS%"=="WINNT" @endlocal
|
||||||
|
|
||||||
|
if "%HOME%"=="" goto homeDrivePathPost
|
||||||
|
if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"
|
||||||
|
|
||||||
|
:homeDrivePathPost
|
||||||
|
if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePost
|
||||||
|
if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePost
|
||||||
|
if exist "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat"
|
||||||
|
|
||||||
|
:userProfilePost
|
||||||
|
if "%USERPROFILE%"=="" goto omega
|
||||||
|
if "%USERPROFILE%"=="%HOME%" goto omega
|
||||||
|
if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto omega
|
||||||
|
if exist "%USERPROFILE%\antrc_post.bat" call "%USERPROFILE%\antrc_post.bat"
|
||||||
|
|
||||||
|
:omega
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
Run ant
|
||||||
|
*/
|
||||||
|
|
||||||
|
'@echo off'
|
||||||
|
parse arg mode envarg '::' antarg
|
||||||
|
|
||||||
|
if mode\='.' & mode\='..' & mode\='/' then do
|
||||||
|
envarg = mode envarg
|
||||||
|
mode = ''
|
||||||
|
end
|
||||||
|
|
||||||
|
if antarg = '' then do
|
||||||
|
antarg = envarg
|
||||||
|
envarg = ''
|
||||||
|
end
|
||||||
|
|
||||||
|
x = setlocal()
|
||||||
|
|
||||||
|
env="OS2ENVIRONMENT"
|
||||||
|
antenv = _getenv_('antenv')
|
||||||
|
if _testenv_() = 0 then interpret 'call "' || antenv || '"' '"' || envarg || '"'
|
||||||
|
|
||||||
|
if mode = '' then mode = _getenv_('ANT_MODE' '..')
|
||||||
|
if mode \= '/' then do
|
||||||
|
runrc = _getenv_('runrc')
|
||||||
|
antrc = _getenv_('antrc' 'antrc.cmd')
|
||||||
|
if mode = '..' then mode = '-r'
|
||||||
|
else mode = ''
|
||||||
|
interpret 'call "' || runrc || '"' antrc '"' || mode || '"'
|
||||||
|
end
|
||||||
|
|
||||||
|
if _testenv_() = 0 then do
|
||||||
|
say 'Ant environment is not set properly'
|
||||||
|
x = endlocal()
|
||||||
|
exit 16
|
||||||
|
end
|
||||||
|
|
||||||
|
settings = '-Dant.home=' || ANT_HOME '-Djava.home=' || JAVA_HOME
|
||||||
|
|
||||||
|
java = _getenv_('javacmd' 'java')
|
||||||
|
opts = value('ANT_OPTS',,env)
|
||||||
|
args = value('ANT_ARGS',,env)
|
||||||
|
lcp = value('LOCALCLASSPATH',,env)
|
||||||
|
cp = value('CLASSPATH',,env)
|
||||||
|
if value('ANT_USE_CP',,env) \= '' then do
|
||||||
|
if lcp \= '' & right(lcp, 1) \= ';' then lcp = lcp || ';'
|
||||||
|
lcp = lcp || cp
|
||||||
|
'SET CLASSPATH='
|
||||||
|
end
|
||||||
|
if lcp\='' then lcp = '-classpath' lcp
|
||||||
|
|
||||||
|
cmd = java opts lcp '-jar' ANT_HOME ||'\lib\ant-launcher.jar' settings args antarg
|
||||||
|
launcher = stream(ANT_HOME ||'\lib\ant-launcher.jar', 'C', 'query exists')
|
||||||
|
if launcher = '' then entry = 'org.apache.tools.ant.Main'
|
||||||
|
else entry = 'org.apache.tools.ant.launch.Launcher'
|
||||||
|
java opts lcp entry settings args antarg
|
||||||
|
|
||||||
|
x = endlocal()
|
||||||
|
|
||||||
|
return rc
|
||||||
|
|
||||||
|
_testenv_: procedure expose env ANT_HOME JAVA_HOME
|
||||||
|
ANT_HOME = value('ANT_HOME',,env)
|
||||||
|
if ANT_HOME = '' then return 0
|
||||||
|
JAVA_HOME = value('JAVA_HOME',,env)
|
||||||
|
if JAVA_HOME = '' then return 0
|
||||||
|
cp = translate(value('CLASSPATH',,env))
|
||||||
|
if pos(translate(ANT_HOME), cp) = 0 then return 0
|
||||||
|
if pos(translate(JAVA_HOME), cp) = 0 then return 0
|
||||||
|
return 1
|
||||||
|
|
||||||
|
_getenv_: procedure expose env
|
||||||
|
parse arg envar default
|
||||||
|
if default = '' then default = envar
|
||||||
|
var = value(translate(envar),,env)
|
||||||
|
if var = '' then var = default
|
||||||
|
return var
|
|
@ -0,0 +1,24 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Args: DIR command
|
||||||
|
cd "$1"
|
||||||
|
CMD="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
|
||||||
|
exec "$CMD" "$@"
|
|
@ -0,0 +1,50 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
REM Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
REM contributor license agreements. See the NOTICE file distributed with
|
||||||
|
REM this work for additional information regarding copyright ownership.
|
||||||
|
REM The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
REM (the "License"); you may not use this file except in compliance with
|
||||||
|
REM the License. You may obtain a copy of the License at
|
||||||
|
REM
|
||||||
|
REM http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
REM
|
||||||
|
REM Unless required by applicable law or agreed to in writing, software
|
||||||
|
REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
REM See the License for the specific language governing permissions and
|
||||||
|
REM limitations under the License.
|
||||||
|
|
||||||
|
if "%OS%"=="Windows_NT" @setlocal
|
||||||
|
if "%OS%"=="WINNT" @setlocal
|
||||||
|
|
||||||
|
if ""%1""=="""" goto runCommand
|
||||||
|
|
||||||
|
rem Change drive and directory to %1
|
||||||
|
if "%OS%"=="Windows_NT" goto nt_cd
|
||||||
|
if "%OS%"=="WINNT" goto nt_cd
|
||||||
|
cd ""%1""
|
||||||
|
goto end_cd
|
||||||
|
:nt_cd
|
||||||
|
cd /d ""%1""
|
||||||
|
:end_cd
|
||||||
|
shift
|
||||||
|
|
||||||
|
rem Slurp the command line arguments. This loop allows for an unlimited number
|
||||||
|
rem of arguments (up to the command line limit, anyway).
|
||||||
|
set ANT_RUN_CMD=%1
|
||||||
|
if ""%1""=="""" goto runCommand
|
||||||
|
shift
|
||||||
|
:loop
|
||||||
|
if ""%1""=="""" goto runCommand
|
||||||
|
set ANT_RUN_CMD=%ANT_RUN_CMD% %1
|
||||||
|
shift
|
||||||
|
goto loop
|
||||||
|
|
||||||
|
:runCommand
|
||||||
|
rem echo %ANT_RUN_CMD%
|
||||||
|
%ANT_RUN_CMD%
|
||||||
|
|
||||||
|
if "%OS%"=="Windows_NT" @endlocal
|
||||||
|
if "%OS%"=="WINNT" @endlocal
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# antRun.pl
|
||||||
|
#
|
||||||
|
# wrapper script for invoking commands on a platform with Perl installed
|
||||||
|
# this is akin to antRun.bat, and antRun the SH script
|
||||||
|
#
|
||||||
|
# created: 2001-10-18
|
||||||
|
# author: Jeff Tulley jtulley@novell.com
|
||||||
|
#######################################################################
|
||||||
|
#be fussy about variables
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
#turn warnings on during dev; generates a few spurious uninitialised var access warnings
|
||||||
|
#use warnings;
|
||||||
|
|
||||||
|
#and set $debug to 1 to turn on trace info (currently unused)
|
||||||
|
my $debug=1;
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# change drive and directory to "%1"
|
||||||
|
my $ANT_RUN_CMD = @ARGV[0];
|
||||||
|
|
||||||
|
# assign current run command to "%2"
|
||||||
|
chdir (@ARGV[0]) || die "Can't cd to $ARGV[0]: $!\n";
|
||||||
|
if ($^O eq "NetWare") {
|
||||||
|
# There is a bug in Perl 5 on NetWare, where chdir does not
|
||||||
|
# do anything. On NetWare, the following path-prefixed form should
|
||||||
|
# always work. (afaict)
|
||||||
|
$ANT_RUN_CMD .= "/".@ARGV[1];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$ANT_RUN_CMD = @ARGV[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
# dispose of the first two arguments, leaving only the command's args.
|
||||||
|
shift;
|
||||||
|
shift;
|
||||||
|
|
||||||
|
# run the command
|
||||||
|
my $returnValue = system $ANT_RUN_CMD, @ARGV;
|
||||||
|
if ($returnValue eq 0) {
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# only 0 and 1 are widely recognized as exit values
|
||||||
|
# so change the exit value to 1
|
||||||
|
exit 1;
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'@echo off'
|
||||||
|
call RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs"
|
||||||
|
call SysLoadFuncs
|
||||||
|
|
||||||
|
/* Prepare the parameters for later use */
|
||||||
|
parse arg argv
|
||||||
|
mode = ''
|
||||||
|
args = ''
|
||||||
|
opts = ''
|
||||||
|
cp = ''
|
||||||
|
lcp = ''
|
||||||
|
|
||||||
|
do i = 1 to words(argv)
|
||||||
|
param = word(argv, i)
|
||||||
|
select
|
||||||
|
when param='-lcp' then mode = 'l'
|
||||||
|
when param='-cp' | param='-classpath' then mode = 'c'
|
||||||
|
when abbrev('-opts', param, 4) then mode = 'o'
|
||||||
|
when abbrev('-args', param, 4) then mode = 'a'
|
||||||
|
otherwise
|
||||||
|
select
|
||||||
|
when mode = 'a' then args = space(args param, 1)
|
||||||
|
when mode = 'c' then cp = space(cp param, 1)
|
||||||
|
when mode = 'l' then lcp = space(lcp param, 1)
|
||||||
|
when mode = 'o' then opts = space(opts param, 1)
|
||||||
|
otherwise
|
||||||
|
say 'Option' param 'ignored'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
env="OS2ENVIRONMENT"
|
||||||
|
antconf = _getenv_('antconf' 'antconf.cmd')
|
||||||
|
runrc = _getenv_('runrc')
|
||||||
|
interpret 'call "' || runrc || '"' '"' || antconf || '"' 'ETC'
|
||||||
|
ANT_HOME = value('ANT_HOME',,env)
|
||||||
|
JAVA_HOME = value('JAVA_HOME',,env)
|
||||||
|
classpath = value('CLASSPATH',,env)
|
||||||
|
classes = stream(JAVA_HOME || "\lib\classes.zip", "C", "QUERY EXISTS")
|
||||||
|
if classes \= '' then classpath = prepend(classpath classes)
|
||||||
|
classes = stream(JAVA_HOME || "\lib\tools.jar", "C", "QUERY EXISTS")
|
||||||
|
if classes \= '' then classpath = prepend(classpath classes)
|
||||||
|
|
||||||
|
classpath = prepend(classpath ANT_HOME || '\lib\ant-launcher.jar')
|
||||||
|
'SET CLASSPATH=' || classpath
|
||||||
|
|
||||||
|
/* Setting classpathes, options and arguments */
|
||||||
|
envset = _getenv_('envset')
|
||||||
|
if cp\='' then interpret 'call "' || envset || '"' '"; CLASSPATH"' '"' || cp || '"'
|
||||||
|
if lcp\='' then interpret 'call "' || envset || '"' '"; LOCALCLASSPATH"' '"' || lcp || '"'
|
||||||
|
if opts\='' then interpret 'call "' || envset || '"' '"-D ANT_OPTS"' '"' || opts || '"'
|
||||||
|
if args\='' then interpret 'call "' || envset || '"' '"ANT_ARGS"' '"' || args || '"'
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
addpath: procedure
|
||||||
|
parse arg path elem
|
||||||
|
if elem = '' then do
|
||||||
|
if path\='' & right(path, 1)\=';' then path = path || ';'
|
||||||
|
return path
|
||||||
|
end
|
||||||
|
if substr(path, length(path)) = ';' then glue = ''
|
||||||
|
else glue = ';'
|
||||||
|
if pos(translate(elem), translate(path)) = 0 then path = path || glue || elem || ';'
|
||||||
|
return path
|
||||||
|
|
||||||
|
prepend: procedure
|
||||||
|
parse arg path elem
|
||||||
|
if elem = '' then do
|
||||||
|
if path\='' & right(path, 1)\=';' then path = path || ';'
|
||||||
|
return path
|
||||||
|
end
|
||||||
|
if pos(translate(elem), translate(path)) = 0 then path = elem || ';' || path
|
||||||
|
return path
|
||||||
|
|
||||||
|
_getenv_: procedure expose env
|
||||||
|
parse arg envar default
|
||||||
|
if default = '' then default = envar
|
||||||
|
var = value(translate(envar),,env)
|
||||||
|
if var = '' then var = default
|
||||||
|
return var
|
|
@ -0,0 +1,114 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
# A script to allow Bash or Z-Shell to complete an Ant command-line.
|
||||||
|
#
|
||||||
|
# To install for Bash 2.0 or better, add the following to ~/.bashrc:
|
||||||
|
#
|
||||||
|
# $ complete -C complete-ant-cmd ant build.sh
|
||||||
|
#
|
||||||
|
# To install for Z-Shell 2.5 or better, add the following to ~/.zshrc:
|
||||||
|
#
|
||||||
|
# function ant_complete () {
|
||||||
|
# local args_line args
|
||||||
|
# read -l args_line
|
||||||
|
# set -A args $args_line
|
||||||
|
# set -A reply $(COMP_LINE=$args_line complete-ant-cmd ${args[1]} $1)
|
||||||
|
# }
|
||||||
|
# compctl -K ant_complete ant build.sh
|
||||||
|
#
|
||||||
|
# @author Mike Williams <mikew@cortexebusiness.com.au>
|
||||||
|
|
||||||
|
my $cmdLine = $ENV{'COMP_LINE'};
|
||||||
|
my $antCmd = $ARGV[0];
|
||||||
|
my $word = $ARGV[1];
|
||||||
|
|
||||||
|
my @completions;
|
||||||
|
if ($word =~ /^-/) {
|
||||||
|
list( restrict( $word, getArguments() ));
|
||||||
|
} elsif ($cmdLine =~ /-(f|buildfile)\s+\S*$/) {
|
||||||
|
list( getBuildFiles($word) );
|
||||||
|
} else {
|
||||||
|
list( restrict( $word, getTargets() ));
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
sub list {
|
||||||
|
for (@_) {
|
||||||
|
print "$_\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub restrict {
|
||||||
|
my ($word, @completions) = @_;
|
||||||
|
grep( /^\Q$word\E/, @completions );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getArguments {
|
||||||
|
qw(-buildfile -debug -emacs -f -find -help -listener -logfile
|
||||||
|
-logger -projecthelp -quiet -verbose -version);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub getBuildFiles {
|
||||||
|
my ($word) = @_;
|
||||||
|
grep( /\.xml$/, glob( "$word*" ));
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getTargets {
|
||||||
|
|
||||||
|
# Look for build-file
|
||||||
|
my $buildFile = 'build.xml';
|
||||||
|
if ($cmdLine =~ /-(f|buildfile)\s+(\S+)/) {
|
||||||
|
$buildFile = $2;
|
||||||
|
}
|
||||||
|
return () unless (-f $buildFile);
|
||||||
|
|
||||||
|
# Run "ant -projecthelp" to list targets. Keep a cache of results in a
|
||||||
|
# cache-file.
|
||||||
|
my $cacheFile = $buildFile;
|
||||||
|
$cacheFile =~ s|(.*/)?(.*)|${1}.ant-targets-${2}|;
|
||||||
|
if ((!-e $cacheFile) || (-M $buildFile) < (-M $cacheFile)) {
|
||||||
|
open( CACHE, '>'.$cacheFile ) || die "can\'t write $cacheFile: $!\n";
|
||||||
|
open( HELP, "$antCmd -projecthelp -f '$buildFile'|" ) || return();
|
||||||
|
my %targets;
|
||||||
|
while( <HELP> ) {
|
||||||
|
if (/^\s+(\S+)/) {
|
||||||
|
$targets{$1}++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
my @targets = sort keys %targets;
|
||||||
|
for (@targets) { print CACHE "$_\n"; }
|
||||||
|
return @targets;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Read the target-cache
|
||||||
|
open( CACHE, $cacheFile ) || die "can\'t read $cacheFile: $!\n";
|
||||||
|
my @targets;
|
||||||
|
while (<CACHE>) {
|
||||||
|
chop;
|
||||||
|
s/\r$//; # for Cygwin
|
||||||
|
push( @targets, $_ );
|
||||||
|
}
|
||||||
|
close( CACHE );
|
||||||
|
@targets;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
SET environment variables
|
||||||
|
First optional parameter:
|
||||||
|
; parameters are considered parts of a path variable, semicolons are
|
||||||
|
appended to each element if not already present
|
||||||
|
-D parameters are properties for Java or Makefile etc., -D will be
|
||||||
|
prepended and the parameters will be separated by a space
|
||||||
|
=D the same as above but equal sign is not required
|
||||||
|
, parameters should be comma separated in the environment variable
|
||||||
|
- parameters should be separated by the next parameter
|
||||||
|
Other values mean that the first parameter is missing and the environment
|
||||||
|
variable will be set to the space separated parameters
|
||||||
|
|
||||||
|
Second parameter: name of the environment variable
|
||||||
|
|
||||||
|
Next parameters: values
|
||||||
|
; implies that the equal sign is considered a part of the parameter and is
|
||||||
|
not interpreted
|
||||||
|
|
||||||
|
-D requires parameters in the form name=value. If the equal sign is not found,
|
||||||
|
the parameters are changed to name=expanded_name
|
||||||
|
|
||||||
|
Other options have optional equal sign. If it is found, only the part after
|
||||||
|
the equal sign will be oprionally expanded.
|
||||||
|
|
||||||
|
If the parameter is the minus sign, the next parameter will not be expanded.
|
||||||
|
If the parameter is a single dot, it will be replaced with the value of the
|
||||||
|
environment variable as it existed before envset was invoked.
|
||||||
|
|
||||||
|
For other parameters the batch looks for the environment variable with the
|
||||||
|
same name (in uppercase). If it is found, it forms the expanded_name. If
|
||||||
|
the environment variable with such a name does not exist, the expanded_name
|
||||||
|
will hold the parameter name without case conversion.
|
||||||
|
*/
|
||||||
|
|
||||||
|
parse arg mode envar args
|
||||||
|
|
||||||
|
equal = 0
|
||||||
|
sep = ' '
|
||||||
|
|
||||||
|
/* Parse command line parameters */
|
||||||
|
select
|
||||||
|
when mode='-' then do
|
||||||
|
sep = envar
|
||||||
|
parse var args envar args
|
||||||
|
end
|
||||||
|
when mode=';' then do
|
||||||
|
sep = ''
|
||||||
|
equal = -1
|
||||||
|
end
|
||||||
|
when mode='-D' then equal = 1
|
||||||
|
when mode='=D' then mode = '-D'
|
||||||
|
when mode=',' then sep = ','
|
||||||
|
otherwise
|
||||||
|
args = envar args
|
||||||
|
envar = mode
|
||||||
|
mode = ''
|
||||||
|
end
|
||||||
|
|
||||||
|
env = 'OS2ENVIRONMENT'
|
||||||
|
envar = translate(envar)
|
||||||
|
orig = value(envar,,env)
|
||||||
|
newval = ''
|
||||||
|
expand = 1
|
||||||
|
|
||||||
|
/* for each parameter... */
|
||||||
|
do i = 1 to words(args)
|
||||||
|
if expand > 0 & word(args, i) = '-' then expand = 0
|
||||||
|
else call addval word(args, i)
|
||||||
|
end
|
||||||
|
|
||||||
|
/* Optionally enclose path variable by quotes */
|
||||||
|
if mode = ';' & pos(' ', newval) > 0 then newval = '"' || newval || '"'
|
||||||
|
|
||||||
|
/* Set the new value, 'SET' cannot be used since it does not allow '=' */
|
||||||
|
x = value(envar, newval, env)
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
addval: procedure expose sep equal orig expand newval mode env
|
||||||
|
parse arg var
|
||||||
|
|
||||||
|
if var = '.' then expvar = orig
|
||||||
|
else do
|
||||||
|
if equal >= 0 then do
|
||||||
|
parse var var name '=' val
|
||||||
|
if val = '' then var = name
|
||||||
|
else var = val
|
||||||
|
end
|
||||||
|
if expand = 0 then expvar = var
|
||||||
|
else expvar = value(translate(var),,env)
|
||||||
|
if expvar = '' then expvar = var
|
||||||
|
if equal >= 0 then do
|
||||||
|
if val = '' then do
|
||||||
|
parse var expvar key '=' val
|
||||||
|
if val <> '' then name = key
|
||||||
|
else do
|
||||||
|
if equal > 0 then val = key
|
||||||
|
else name = key
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else val = expvar
|
||||||
|
if pos(' ', val) > 0 | pos('=', val) > 0 then val = '"' || val || '"'
|
||||||
|
if val = '' then expvar = name
|
||||||
|
else expvar = name || '=' || val
|
||||||
|
end
|
||||||
|
if mode = '-D' then expvar = '-D' || expvar
|
||||||
|
if mode = ';' then do
|
||||||
|
if right(expvar, 1) <> ';' then expvar = expvar || ';'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if newval = '' then newval = expvar
|
||||||
|
else newval = newval || sep || expvar
|
||||||
|
expand = 1
|
||||||
|
return
|
|
@ -0,0 +1,31 @@
|
||||||
|
REM
|
||||||
|
REM Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
REM contributor license agreements. See the NOTICE file distributed with
|
||||||
|
REM this work for additional information regarding copyright ownership.
|
||||||
|
REM The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
REM (the "License"); you may not use this file except in compliance with
|
||||||
|
REM the License. You may obtain a copy of the License at
|
||||||
|
REM
|
||||||
|
REM http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
REM
|
||||||
|
REM Unless required by applicable law or agreed to in writing, software
|
||||||
|
REM distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
REM See the License for the specific language governing permissions and
|
||||||
|
REM limitations under the License.
|
||||||
|
REM
|
||||||
|
REM
|
||||||
|
|
||||||
|
set _CLASSPATHCOMPONENT=%1
|
||||||
|
if ""%1""=="""" goto gotAllArgs
|
||||||
|
shift
|
||||||
|
|
||||||
|
:argCheck
|
||||||
|
if ""%1""=="""" goto gotAllArgs
|
||||||
|
set _CLASSPATHCOMPONENT=%_CLASSPATHCOMPONENT% %1
|
||||||
|
shift
|
||||||
|
goto argCheck
|
||||||
|
|
||||||
|
:gotAllArgs
|
||||||
|
set LOCALCLASSPATH=%LOCALCLASSPATH%;%_CLASSPATHCOMPONENT%
|
||||||
|
|
|
@ -0,0 +1,153 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# runant.pl
|
||||||
|
#
|
||||||
|
# wrapper script for invoking ant in a platform with Perl installed
|
||||||
|
# this may include cgi-bin invocation, which is considered somewhat daft.
|
||||||
|
# (slo: that should be a separate file which can be derived from this
|
||||||
|
# and returns the XML formatted output)
|
||||||
|
#
|
||||||
|
# the code is not totally portable due to classpath and directory splitting
|
||||||
|
# issues. oops. (NB, use File::Spec::Functions will help and the code is
|
||||||
|
# structured for the catfile() call, but because of perl version funnies
|
||||||
|
# the code is not included.
|
||||||
|
#
|
||||||
|
# created: 2000-8-24
|
||||||
|
# author: Steve Loughran steve_l@sourceforge.net
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# Assumptions:
|
||||||
|
#
|
||||||
|
# - the "java" executable/script is on the command path
|
||||||
|
# - ANT_HOME has been set
|
||||||
|
# - target platform uses ":" as classpath separator or perl indicates it is dos/win32
|
||||||
|
# - target platform uses "/" as directory separator.
|
||||||
|
|
||||||
|
#be fussy about variables
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
#platform specifics (disabled)
|
||||||
|
#use File::Spec::Functions;
|
||||||
|
|
||||||
|
#turn warnings on during dev; generates a few spurious uninitialised var access warnings
|
||||||
|
#use warnings;
|
||||||
|
|
||||||
|
#and set $debug to 1 to turn on trace info
|
||||||
|
my $debug=1;
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# check to make sure environment is setup
|
||||||
|
#
|
||||||
|
|
||||||
|
my $HOME = $ENV{ANT_HOME};
|
||||||
|
if ($HOME eq "")
|
||||||
|
{
|
||||||
|
die "\n\nANT_HOME *MUST* be set!\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $JAVACMD = $ENV{JAVACMD};
|
||||||
|
$JAVACMD = "java" if $JAVACMD eq "";
|
||||||
|
|
||||||
|
my $onnetware = 0;
|
||||||
|
if ($^O eq "NetWare")
|
||||||
|
{
|
||||||
|
$onnetware = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $oncygwin = ($^O eq "cygwin");
|
||||||
|
|
||||||
|
#ISSUE: what java wants to split up classpath varies from platform to platform
|
||||||
|
#and perl is not too hot at hinting which box it is on.
|
||||||
|
#here I assume ":" 'cept on win32, dos, and netware. Add extra tests here as needed.
|
||||||
|
my $s=":";
|
||||||
|
if(($^O eq "MSWin32") || ($^O eq "dos") || ($^O eq "cygwin") ||
|
||||||
|
($onnetware == 1))
|
||||||
|
{
|
||||||
|
$s=";";
|
||||||
|
}
|
||||||
|
|
||||||
|
#build up standard classpath
|
||||||
|
my $localpath = "$HOME/lib/ant-launcher.jar";
|
||||||
|
#set JVM options and Ant arguments, if any
|
||||||
|
my @ANT_OPTS=split(" ", $ENV{ANT_OPTS});
|
||||||
|
my @ANT_ARGS=split(" ", $ENV{ANT_ARGS});
|
||||||
|
|
||||||
|
#jikes
|
||||||
|
if($ENV{JIKESPATH} ne "")
|
||||||
|
{
|
||||||
|
push @ANT_OPTS, "-Djikes.class.path=$ENV{JIKESPATH}";
|
||||||
|
}
|
||||||
|
|
||||||
|
#construct arguments to java
|
||||||
|
my @ARGS;
|
||||||
|
push @ARGS, @ANT_OPTS;
|
||||||
|
|
||||||
|
my $CYGHOME = "";
|
||||||
|
|
||||||
|
my $classpath=$ENV{CLASSPATH};
|
||||||
|
if ($oncygwin == 1) {
|
||||||
|
$localpath = `cygpath --path --windows $localpath`;
|
||||||
|
chomp ($localpath);
|
||||||
|
if (! $classpath eq "")
|
||||||
|
{
|
||||||
|
$classpath = `cygpath --path --windows "$classpath"`;
|
||||||
|
chomp ($classpath);
|
||||||
|
}
|
||||||
|
$HOME = `cygpath --path --windows $HOME`;
|
||||||
|
chomp ($HOME);
|
||||||
|
$CYGHOME = `cygpath --path --windows $ENV{HOME}`;
|
||||||
|
chomp ($CYGHOME);
|
||||||
|
}
|
||||||
|
push @ARGS, "-classpath", "$localpath";
|
||||||
|
push @ARGS, "-Dant.home=$HOME";
|
||||||
|
if ( ! $CYGHOME eq "" )
|
||||||
|
{
|
||||||
|
push @ARGS, "-Dcygwin.user.home=\"$CYGHOME\""
|
||||||
|
}
|
||||||
|
push @ARGS, "org.apache.tools.ant.launch.Launcher", @ANT_ARGS;
|
||||||
|
push @ARGS, @ARGV;
|
||||||
|
if (! $classpath eq "")
|
||||||
|
{
|
||||||
|
if ($onnetware == 1)
|
||||||
|
{
|
||||||
|
# make classpath literally $CLASSPATH
|
||||||
|
# this is to avoid pushing us over the 512 character limit
|
||||||
|
# even skip the ; - that is already in $localpath
|
||||||
|
push @ARGS, "-lib", "\$CLASSPATH";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
push @ARGS, "-lib", "$classpath";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "\n $JAVACMD @ARGS\n\n" if ($debug);
|
||||||
|
|
||||||
|
my $returnValue = system $JAVACMD, @ARGS;
|
||||||
|
if ($returnValue eq 0)
|
||||||
|
{
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# only 0 and 1 are widely recognized as exit values
|
||||||
|
# so change the exit value to 1
|
||||||
|
exit 1;
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# this work for additional information regarding copyright ownership.
|
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
# (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
runant.py
|
||||||
|
|
||||||
|
This script is a translation of the runant.pl written by Steve Loughran.
|
||||||
|
It runs ant with/out arguments, it should be quite portable (thanks to
|
||||||
|
the python os library)
|
||||||
|
This script has been tested with Python2.0/Win2K
|
||||||
|
|
||||||
|
created: 2001-04-11
|
||||||
|
author: Pierre Dittgen pierre.dittgen@criltelecom.com
|
||||||
|
|
||||||
|
Assumptions:
|
||||||
|
|
||||||
|
- the "java" executable/script is on the command path
|
||||||
|
"""
|
||||||
|
import os, os.path, string, sys
|
||||||
|
|
||||||
|
# Change it to 1 to get extra debug information
|
||||||
|
debug = 0
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
# If ANT_HOME is not set default to script's parent directory
|
||||||
|
if os.environ.has_key('ANT_HOME'):
|
||||||
|
ANT_HOME = os.environ['ANT_HOME']
|
||||||
|
else:
|
||||||
|
ANT_HOME = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
|
||||||
|
|
||||||
|
# set ANT_LIB location
|
||||||
|
ANT_LIB = os.path.join(ANT_HOME, 'lib')
|
||||||
|
|
||||||
|
# set JAVACMD (check variables JAVACMD and JAVA_HOME)
|
||||||
|
JAVACMD = None
|
||||||
|
if not os.environ.has_key('JAVACMD'):
|
||||||
|
if os.environ.has_key('JAVA_HOME'):
|
||||||
|
if not os.path.exists(os.environ['JAVA_HOME']):
|
||||||
|
print "Warning: JAVA_HOME is not defined correctly."
|
||||||
|
else:
|
||||||
|
JAVACMD = os.path.join(os.environ['JAVA_HOME'], 'bin', 'java')
|
||||||
|
else:
|
||||||
|
print "Warning: JAVA_HOME not set."
|
||||||
|
else:
|
||||||
|
JAVACMD = os.environ['JAVACMD']
|
||||||
|
if not JAVACMD:
|
||||||
|
JAVACMD = 'java'
|
||||||
|
|
||||||
|
launcher_jar = os.path.join(ANT_LIB, 'ant-launcher.jar')
|
||||||
|
if not os.path.exists(launcher_jar):
|
||||||
|
print 'Unable to locate ant-launcher.jar. Expected to find it in %s' % \
|
||||||
|
ANT_LIB
|
||||||
|
|
||||||
|
# Build up standard classpath (LOCALCLASSPATH)
|
||||||
|
LOCALCLASSPATH = launcher_jar
|
||||||
|
if os.environ.has_key('LOCALCLASSPATH'):
|
||||||
|
LOCALCLASSPATH += os.pathsep + os.environ['LOCALCLASSPATH']
|
||||||
|
|
||||||
|
ANT_OPTS = ""
|
||||||
|
if os.environ.has_key('ANT_OPTS'):
|
||||||
|
ANT_OPTS = os.environ['ANT_OPTS']
|
||||||
|
|
||||||
|
OPTS = ""
|
||||||
|
if os.environ.has_key('JIKESPATH'):
|
||||||
|
OPTS = '-Djikes.class.path=\"%s\"' % os.environ['JIKESPATH']
|
||||||
|
|
||||||
|
ANT_ARGS = ""
|
||||||
|
if os.environ.has_key('ANT_ARGS'):
|
||||||
|
ANT_ARGS = os.environ['ANT_ARGS']
|
||||||
|
|
||||||
|
CLASSPATH = ""
|
||||||
|
if os.environ.has_key('CLASSPATH'):
|
||||||
|
CLASSPATH = os.environ['CLASSPATH']
|
||||||
|
|
||||||
|
# Builds the commandline
|
||||||
|
cmdline = ('%s %s -classpath %s -Dant.home=%s %s ' + \
|
||||||
|
'org.apache.tools.ant.launch.Launcher %s -lib %s %s') \
|
||||||
|
% (JAVACMD, ANT_OPTS, LOCALCLASSPATH, ANT_HOME, OPTS, ANT_ARGS, \
|
||||||
|
CLASSPATH, string.join(sys.argv[1:], ' '))
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
print '\n%s\n\n' % (cmdline)
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
# Run the biniou!
|
||||||
|
os.system(cmdline)
|
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
Run RC file, name is in the first arg, second arg is either PATH
|
||||||
|
ENV or -r or nothing
|
||||||
|
*/
|
||||||
|
|
||||||
|
parse arg name path rest
|
||||||
|
|
||||||
|
if name = '' then do
|
||||||
|
say 'RC file name is missing'
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if rest \= '' then do
|
||||||
|
say 'Too many parameters'
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
call runit name path
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
runit: procedure
|
||||||
|
parse arg name path dir
|
||||||
|
|
||||||
|
if path \= '' & path \= '-r' then do
|
||||||
|
dir = value(translate(path),,'OS2ENVIRONMENT')
|
||||||
|
if dir = '' then return
|
||||||
|
dir = translate(dir, '\', '/') /* change UNIX-like path to OS/2 */
|
||||||
|
end
|
||||||
|
|
||||||
|
if dir = '' then dir = directory()
|
||||||
|
|
||||||
|
if path = '-r' then do /* recursive call */
|
||||||
|
subdir = filespec('path', dir)
|
||||||
|
if subdir \= '\' then do
|
||||||
|
subdir = left(subdir, length(subdir)-1)
|
||||||
|
call runit name path filespec('drive', dir) || subdir
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
/* Look for the file and run it */
|
||||||
|
if right(dir, 1) \= '\' then dir = dir || '\'
|
||||||
|
rcfile = stream(dir || name, 'c', 'query exists')
|
||||||
|
if rcfile \= '' then interpret 'call "' || rcfile || '"'
|
||||||
|
|
||||||
|
return
|
|
@ -0,0 +1,148 @@
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
|
||||||
|
version='1.0'>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xsl:param name="title"/>
|
||||||
|
<xsl:param name="module"/>
|
||||||
|
<xsl:param name="cvsweb"/>
|
||||||
|
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"
|
||||||
|
doctype-public="-//W3C//DTD HTML 4.01//EN"
|
||||||
|
doctype-system="http://www.w3.org/TR/html401/strict.dtd"/>
|
||||||
|
|
||||||
|
<!-- Copy standard document elements. Elements that
|
||||||
|
should be ignored must be filtered by apply-templates
|
||||||
|
tags. -->
|
||||||
|
<xsl:template match="*">
|
||||||
|
<xsl:copy>
|
||||||
|
<xsl:copy-of select="attribute::*[. != '']"/>
|
||||||
|
<xsl:apply-templates/>
|
||||||
|
</xsl:copy>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="changelog">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><xsl:value-of select="$title"/></title>
|
||||||
|
<style type="text/css">
|
||||||
|
body, p {
|
||||||
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 80%;
|
||||||
|
color: #000000;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
tr, td {
|
||||||
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
background: #eeeee0;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
.dateAndAuthor {
|
||||||
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: left;
|
||||||
|
background: #a6caf0;
|
||||||
|
padding-left: 3px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>
|
||||||
|
<a name="top"><xsl:value-of select="$title"/></a>
|
||||||
|
</h1>
|
||||||
|
<p style="text-align: right">Designed for use with <a href="http://ant.apache.org/">Apache Ant</a>.</p>
|
||||||
|
<hr/>
|
||||||
|
<table border="0" width="100%" cellspacing="1">
|
||||||
|
|
||||||
|
<xsl:apply-templates select=".//entry">
|
||||||
|
<xsl:sort select="date" data-type="text" order="descending"/>
|
||||||
|
<xsl:sort select="time" data-type="text" order="descending"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="entry">
|
||||||
|
<tr>
|
||||||
|
<td class="dateAndAuthor">
|
||||||
|
<xsl:value-of select="date"/><xsl:text> </xsl:text><xsl:value-of select="time"/><xsl:text> </xsl:text><xsl:value-of select="author"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<pre>
|
||||||
|
<xsl:apply-templates select="msg"/></pre>
|
||||||
|
<ul>
|
||||||
|
<xsl:apply-templates select="file"/>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="date">
|
||||||
|
<i><xsl:value-of select="."/></i>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="time">
|
||||||
|
<i><xsl:value-of select="."/></i>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="author">
|
||||||
|
<i>
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
|
||||||
|
<xsl:value-of select="."/></a>
|
||||||
|
</i>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="file">
|
||||||
|
<li>
|
||||||
|
<a>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="string-length(prevrevision) = 0 ">
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&content-type=text/x-cvsweb-markup</xsl:attribute>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&r2=<xsl:value-of select="prevrevision"/></xsl:attribute>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<xsl:value-of select="name" /> (<xsl:value-of select="revision"/>)</a>
|
||||||
|
</li>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Any elements within a msg are processed,
|
||||||
|
so that we can preserve HTML tags. -->
|
||||||
|
<xsl:template match="msg">
|
||||||
|
<xsl:apply-templates/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,299 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||||
|
extension-element-prefixes="redirect">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||||
|
|
||||||
|
<xsl:param name="output.dir" select="'.'"/>
|
||||||
|
<xsl:param name="basedir" select="'.'"/>
|
||||||
|
|
||||||
|
<xsl:template match="checkstyle">
|
||||||
|
<!-- create the index.html -->
|
||||||
|
<redirect:write file="{$output.dir}/index.html">
|
||||||
|
<xsl:call-template name="index.html"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the stylesheet.css -->
|
||||||
|
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||||
|
<xsl:call-template name="stylesheet.css"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-summary.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="overview"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-classes.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.classes"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- process all files -->
|
||||||
|
<xsl:apply-templates select="file[count(error) != 0]"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="index.html">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>CheckStyle Audit</title>
|
||||||
|
</head>
|
||||||
|
<frameset cols="20%,80%">
|
||||||
|
<frame src="allclasses-frame.html" name="fileListFrame"/>
|
||||||
|
<frame src="overview-frame.html" name="fileFrame"/>
|
||||||
|
</frameset>
|
||||||
|
<noframes>
|
||||||
|
<h2>Frame Alert</h2>
|
||||||
|
<p>
|
||||||
|
This document is designed to be viewed using the frames feature.
|
||||||
|
If you see this message, you are using a non-frame-capable web client.
|
||||||
|
</p>
|
||||||
|
</noframes>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="pageHeader">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td class="text-align:right"><h2>CheckStyle Audit</h2></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="text-align:right">Designed for use with
|
||||||
|
<a href='http://checkstyle.sourceforge.net/'>CheckStyle</a> and
|
||||||
|
<a href='http://ant.apache.org/'>Ant</a>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr size="1"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="checkstyle" mode="overview">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- page header -->
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
|
||||||
|
<!-- Summary part -->
|
||||||
|
<xsl:apply-templates select="." mode="summary"/>
|
||||||
|
<hr size="1" width="100%" align="left"/>
|
||||||
|
|
||||||
|
<!-- File list part -->
|
||||||
|
<xsl:apply-templates select="." mode="filelist"/>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="stylesheet.css">
|
||||||
|
.bannercell {
|
||||||
|
border: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin-left: 10;
|
||||||
|
margin-right: 10;
|
||||||
|
font:normal 80% arial,helvetica,sanserif;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
.oddrow td {
|
||||||
|
background: #efefef;
|
||||||
|
}
|
||||||
|
.evenrow td {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
th, td {
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
font-weight:bold;
|
||||||
|
background: #ccc;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
table, th, td {
|
||||||
|
font-size:100%;
|
||||||
|
border: none
|
||||||
|
}
|
||||||
|
table.log tr td, tr th {
|
||||||
|
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:140%;
|
||||||
|
margin-bottom: 5;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size:100%;
|
||||||
|
font-weight:bold;
|
||||||
|
background: #525D76;
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 5px;
|
||||||
|
margin-right: 2px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an all-classes.html file that contains a link to all files.
|
||||||
|
-->
|
||||||
|
<xsl:template match="checkstyle" mode="all.classes">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Files</h2>
|
||||||
|
<p>
|
||||||
|
<table width="100%">
|
||||||
|
<!-- For each file create its part -->
|
||||||
|
<xsl:apply-templates select="file[count(error) != 0]" mode="all.classes">
|
||||||
|
<xsl:sort select="substring-after(@name, $basedir)"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="checkstyle" mode="filelist">
|
||||||
|
<h3>Files</h3>
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
</tr>
|
||||||
|
<xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
|
||||||
|
<xsl:sort select="count(error)" order="descending" data-type="number"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="file" mode="filelist">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternated-row"/>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="substring-after(@name, $basedir)"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td><xsl:value-of select="count(error)"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="file" mode="all.classes">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a target="fileFrame">
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="substring-after(@name, $basedir)"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
transform string like a/b/c to ../../../
|
||||||
|
@param path the path to transform into a descending directory path
|
||||||
|
-->
|
||||||
|
<xsl:template name="path">
|
||||||
|
<xsl:param name="path"/>
|
||||||
|
|
||||||
|
<!-- Convert a windows path '\' to a unix path '/' for further processing. -->
|
||||||
|
<xsl:variable name="path2" select="translate($path,'\','/')"/>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:if test="contains($path2,'/')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
<xsl:call-template name="path">
|
||||||
|
<xsl:with-param name="path"><xsl:value-of select="substring-after($path2,'/')"/></xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not(contains($path2,'/')) and not($path2 = '')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="file">
|
||||||
|
<redirect:write file="{$output.dir}/files/{substring-after(@name, $basedir)}.html">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css">
|
||||||
|
<xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="substring-after(@name, $basedir)"/></xsl:call-template><xsl:text>stylesheet.css</xsl:text></xsl:attribute>
|
||||||
|
</link>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>File <xsl:value-of select="substring-after(@name, $basedir)"/></h3>
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<tr>
|
||||||
|
<th>Error Description</th>
|
||||||
|
<th>Line:Column</th>
|
||||||
|
</tr>
|
||||||
|
<xsl:for-each select="error">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternated-row"/>
|
||||||
|
<td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
|
||||||
|
<td align="center"><xsl:value-of select="@line"/><xsl:if test="@column">:<xsl:value-of select="@column"/></xsl:if></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="checkstyle" mode="summary">
|
||||||
|
<h3>Summary</h3>
|
||||||
|
<xsl:variable name="fileCount" select="count(file)"/>
|
||||||
|
<xsl:variable name="errorCount" select="count(file/error)"/>
|
||||||
|
<xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<tr>
|
||||||
|
<th>Total Files</th>
|
||||||
|
<th>Files With Errors</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternated-row"/>
|
||||||
|
<td><xsl:value-of select="$fileCount"/></td>
|
||||||
|
<td><xsl:value-of select="$fileErrorCount"/></td>
|
||||||
|
<td><xsl:value-of select="$errorCount"/></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="alternated-row">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
|
||||||
|
<xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:strip-space elements="checkstyle"/>
|
||||||
|
<xsl:preserve-space elements="file"/>
|
||||||
|
<xsl:output method="text"/>
|
||||||
|
<xsl:template match="checkstyle/file/error">
|
||||||
|
<xsl:value-of select="../@name"/>
|
||||||
|
<xsl:text>:</xsl:text>
|
||||||
|
<xsl:value-of select="@line"/>
|
||||||
|
<xsl:text>:</xsl:text>
|
||||||
|
<xsl:value-of select="@column"/>
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
|
<xsl:value-of select="@message"/>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
|
@ -0,0 +1,130 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||||
|
extension-element-prefixes="redirect">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:output method="xml" indent="yes"/>
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||||
|
|
||||||
|
<xsl:param name="output.dir" select="'.'"/>
|
||||||
|
<xsl:param name="basedir" select="'.'"/>
|
||||||
|
|
||||||
|
<xsl:template match="checkstyle">
|
||||||
|
<document>
|
||||||
|
<properties>
|
||||||
|
<title>Checkstyle Audit</title>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<xsl:apply-templates select="." mode="summary"/>
|
||||||
|
<!-- File list part -->
|
||||||
|
<xsl:apply-templates select="." mode="filelist"/>
|
||||||
|
<xsl:apply-templates select="file[count(error) != 0]"/>
|
||||||
|
</body>
|
||||||
|
</document>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="checkstyle" mode="filelist">
|
||||||
|
<section name="Files">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
</tr>
|
||||||
|
<xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
|
||||||
|
<xsl:sort select="count(error)" order="descending" data-type="number"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="file" mode="filelist">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternated-row"/>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:text>files</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="substring-after(@name, $basedir)"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td><xsl:value-of select="count(error)"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="file">
|
||||||
|
<redirect:write file="{$output.dir}/files{substring-after(@name, $basedir)}.xml">
|
||||||
|
<document>
|
||||||
|
<properties>
|
||||||
|
<title>Checkstyle Audit</title>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<section name="Details for {substring-after(@name, $basedir)}">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Error Description</th>
|
||||||
|
<th>Line</th>
|
||||||
|
</tr>
|
||||||
|
<xsl:for-each select="error">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternated-row"/>
|
||||||
|
<td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
|
||||||
|
<td><xsl:value-of select="@line"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</document>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="checkstyle" mode="summary">
|
||||||
|
<section name="Summary">
|
||||||
|
<xsl:variable name="fileCount" select="count(file)"/>
|
||||||
|
<xsl:variable name="errorCount" select="count(file/error)"/>
|
||||||
|
<xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Files</th>
|
||||||
|
<th>Files With Errors</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternated-row"/>
|
||||||
|
<td><xsl:value-of select="$fileCount"/></td>
|
||||||
|
<td><xsl:value-of select="$fileErrorCount"/></td>
|
||||||
|
<td><xsl:value-of select="$errorCount"/></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="alternated-row">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
|
||||||
|
<xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
|
@ -0,0 +1,489 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||||
|
extension-element-prefixes="redirect">
|
||||||
|
<xsl:output method="html" indent="yes"/>
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Sample stylesheet to be used with JProbe 3.0 XML output.
|
||||||
|
|
||||||
|
It creates a set of HTML files a la javadoc where you can browse easily
|
||||||
|
through all packages and classes.
|
||||||
|
|
||||||
|
It is best used with JProbe Coverage Ant task that gives you the benefit
|
||||||
|
of a reference classpath so that you have the list of classes/methods
|
||||||
|
that are not used at all in a given classpath.
|
||||||
|
|
||||||
|
@author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- default output directory is current directory -->
|
||||||
|
<xsl:param name="output.dir" select="'.'"/>
|
||||||
|
|
||||||
|
<!-- ======================================================================
|
||||||
|
Root element
|
||||||
|
======================================================================= -->
|
||||||
|
<xsl:template match="/snapshot">
|
||||||
|
<!-- create the index.html -->
|
||||||
|
<redirect:write file="{$output.dir}/index.html">
|
||||||
|
<xsl:call-template name="index.html"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the stylesheet.css -->
|
||||||
|
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||||
|
<xsl:call-template name="stylesheet.css"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||||
|
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-classes.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.classes"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- process all packages -->
|
||||||
|
<xsl:apply-templates select="./package" mode="write"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- =======================================================================
|
||||||
|
Frameset definition. Entry point for the report.
|
||||||
|
3 frames: packageListFrame, classListFrame, classFrame
|
||||||
|
======================================================================= -->
|
||||||
|
<xsl:template name="index.html">
|
||||||
|
<html>
|
||||||
|
<head><title>Coverage Results.</title></head>
|
||||||
|
<frameset cols="20%,80%">
|
||||||
|
<frameset rows="30%,70%">
|
||||||
|
<frame src="overview-frame.html" name="packageListFrame"/>
|
||||||
|
<frame src="allclasses-frame.html" name="classListFrame"/>
|
||||||
|
</frameset>
|
||||||
|
<frame src="overview-summary.html" name="classFrame"/>
|
||||||
|
</frameset>
|
||||||
|
<noframes>
|
||||||
|
<h2>Frame Alert</h2>
|
||||||
|
<p>
|
||||||
|
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||||
|
</p>
|
||||||
|
</noframes>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- =======================================================================
|
||||||
|
Stylesheet CSS used
|
||||||
|
======================================================================= -->
|
||||||
|
<!-- this is the stylesheet css to use for nearly everything -->
|
||||||
|
<xsl:template name="stylesheet.css">
|
||||||
|
.bannercell {
|
||||||
|
border: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin-left: 10;
|
||||||
|
margin-right: 10;
|
||||||
|
font:normal 80% arial,helvetica,sanserif;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
.a td {
|
||||||
|
background: #efefef;
|
||||||
|
}
|
||||||
|
.b td {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
th, td {
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
font-weight:bold;
|
||||||
|
background: #ccc;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
table, th, td {
|
||||||
|
font-size:100%;
|
||||||
|
border: none
|
||||||
|
}
|
||||||
|
table.log tr td, tr th {
|
||||||
|
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:140%;
|
||||||
|
margin-bottom: 5;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size:100%;
|
||||||
|
font-weight:bold;
|
||||||
|
background: #525D76;
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 5px;
|
||||||
|
margin-right: 2px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- =======================================================================
|
||||||
|
List of all classes in all packages
|
||||||
|
This will be the first page in the classListFrame
|
||||||
|
======================================================================= -->
|
||||||
|
<xsl:template match="snapshot" mode="all.classes">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:for-each select="package/class">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
<xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
|
||||||
|
<xsl:variable name="link">
|
||||||
|
<xsl:if test="not($package.name='')">
|
||||||
|
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||||
|
</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||||
|
</xsl:variable>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a target="classFrame" href="{$link}"><xsl:value-of select="@name"/></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- list of all packages -->
|
||||||
|
<xsl:template match="snapshot" mode="all.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||||
|
<h2>Packages</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:for-each select="package">
|
||||||
|
<xsl:sort select="@name" order="ascending"/>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- overview of statistics in packages -->
|
||||||
|
<xsl:template match="snapshot" mode="overview.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link"/>
|
||||||
|
</head>
|
||||||
|
<body onload="open('allclasses-frame.html','classListFrame')">
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Summary</h3>
|
||||||
|
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<tr>
|
||||||
|
<!--th width="10%" nowrap="nowrap">Date</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Elapsed time</th-->
|
||||||
|
<th width="10%" nowrap="nowrap">Reported Classes</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Methods Hit</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||||
|
</tr>
|
||||||
|
<tr class="a">
|
||||||
|
<!--td nowrap="nowrap"><xsl:value-of select="execution_log/@program_start"/></td>
|
||||||
|
<td><xsl:value-of select="format-number(execution_log/@elapsed_time div 1000,'0.0')"/>secs</td-->
|
||||||
|
<td><xsl:value-of select="count(package/class)"/></td>
|
||||||
|
<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
|
||||||
|
<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table border="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: justify;">
|
||||||
|
To ensure accurate test runs on Java applications, developers need to know how much of
|
||||||
|
the code has been tested, and where to find any untested code. Coverage helps you
|
||||||
|
locate untested code, and measure precisely how much code has been exercised.
|
||||||
|
The result is a higher quality application in a shorter period of time.
|
||||||
|
<p/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h3>Packages</h3>
|
||||||
|
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:apply-templates select="package[1]" mode="stats.header"/>
|
||||||
|
<!-- display packages and sort them via their coverage rate -->
|
||||||
|
<xsl:for-each select="package">
|
||||||
|
<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternate-row"/>
|
||||||
|
<td><a href="{translate(@name,'.','/')}/package-summary.html"><xsl:value-of select="@name"/></a></td>
|
||||||
|
<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
|
||||||
|
<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
<xsl:call-template name="pageFooter"/>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
detailed info for a package. It will output the list of classes
|
||||||
|
, the summary page, and the info for each class
|
||||||
|
-->
|
||||||
|
<xsl:template match="package" mode="write">
|
||||||
|
<xsl:variable name="package.dir">
|
||||||
|
<xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'.','/')"/></xsl:if>
|
||||||
|
<xsl:if test="@name = ''">.</xsl:if>
|
||||||
|
</xsl:variable>
|
||||||
|
|
||||||
|
<!-- create a classes-list.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="classes.list"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create a package-summary.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||||
|
<xsl:apply-templates select="." mode="package.summary"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- for each class, creates a @name.html -->
|
||||||
|
<xsl:for-each select="class">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
|
||||||
|
<xsl:apply-templates select="." mode="class.details"/>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- list of classes in a package -->
|
||||||
|
<xsl:template match="package" mode="classes.list">
|
||||||
|
<html>
|
||||||
|
<HEAD>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="@name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</HEAD>
|
||||||
|
<BODY>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<H2>Classes</H2>
|
||||||
|
<TABLE WIDTH="100%">
|
||||||
|
<xsl:for-each select="class">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</TABLE>
|
||||||
|
</BODY>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- summary of a package -->
|
||||||
|
<xsl:template match="package" mode="package.summary">
|
||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="@name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</HEAD>
|
||||||
|
<!-- when loading this package, it will open the classes into the frame -->
|
||||||
|
<BODY onload="open('package-frame.html','classListFrame')">
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Package <xsl:value-of select="@name"/></h3>
|
||||||
|
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:apply-templates select="." mode="stats.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="stats"/>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<xsl:if test="count(class) > 0">
|
||||||
|
<H3>Classes</H3>
|
||||||
|
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:apply-templates select="." mode="stats.header"/>
|
||||||
|
<xsl:apply-templates select="class" mode="stats">
|
||||||
|
<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:call-template name="pageFooter"/>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- details of a class -->
|
||||||
|
<xsl:template match="class" mode="class.details">
|
||||||
|
<xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
|
||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</HEAD>
|
||||||
|
<BODY>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
|
||||||
|
|
||||||
|
<!-- class summary -->
|
||||||
|
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:apply-templates select="." mode="stats.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="stats"/>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!-- details of methods -->
|
||||||
|
<H3>Methods</H3>
|
||||||
|
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:apply-templates select="method[1]" mode="stats.header"/>
|
||||||
|
<xsl:apply-templates select="method" mode="stats">
|
||||||
|
<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
<xsl:call-template name="pageFooter"/>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Page Header -->
|
||||||
|
<xsl:template name="pageHeader">
|
||||||
|
<!-- jakarta logo -->
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td class="bannercell" rowspan="2">
|
||||||
|
<a href="http://jakarta.apache.org/">
|
||||||
|
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><h2>Source Code Coverage</h2></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right">Designed for use with <a href='http://www.sitraka.com/jprobe'>Sitraka JProbe</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr size="1"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Page Footer -->
|
||||||
|
<xsl:template name="pageFooter">
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="table.header">
|
||||||
|
<tr>
|
||||||
|
<th width="80%">Name</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Methods Hit</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="method" mode="stats.header">
|
||||||
|
<tr>
|
||||||
|
<th width="90%">Name</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="method" mode="stats">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternate-row"/>
|
||||||
|
<td><xsl:value-of select="@name"/></td>
|
||||||
|
<td>
|
||||||
|
<xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="package|class" mode="stats.header">
|
||||||
|
<tr>
|
||||||
|
<th width="80%">Name</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Methods Hit</th>
|
||||||
|
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="package|class" mode="stats">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternate-row"/>
|
||||||
|
<td><xsl:value-of select="@name"/></td>
|
||||||
|
<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
|
||||||
|
<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
transform string like a.b.c to ../../../
|
||||||
|
@param path the path to transform into a descending directory path
|
||||||
|
-->
|
||||||
|
<xsl:template name="path">
|
||||||
|
<xsl:param name="path"/>
|
||||||
|
<xsl:if test="contains($path,'.')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
<xsl:call-template name="path">
|
||||||
|
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- create the link to the stylesheet based on the package name -->
|
||||||
|
<xsl:template name="create.stylesheet.link">
|
||||||
|
<xsl:param name="package.name"/>
|
||||||
|
<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- alternated row style -->
|
||||||
|
<xsl:template name="alternate-row">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:if test="position() mod 2 = 1">a</xsl:if>
|
||||||
|
<xsl:if test="position() mod 2 = 0">b</xsl:if>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,487 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||||
|
extension-element-prefixes="redirect">
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Sample stylesheet to be used with JDepend XML output.
|
||||||
|
|
||||||
|
It creates a set of HTML files a la javadoc where you can browse easily
|
||||||
|
through all packages and classes.
|
||||||
|
|
||||||
|
@author <a href="mailto:jtulley@novell.com">Jeff Tulley</a>
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xsl:param name="output.dir" select="'.'"/>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend">
|
||||||
|
<!-- create the index.html -->
|
||||||
|
<redirect:write file="{$output.dir}/index.html">
|
||||||
|
<xsl:call-template name="index.html"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the stylesheet.css -->
|
||||||
|
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||||
|
<xsl:call-template name="stylesheet.css"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||||
|
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-packages.html">
|
||||||
|
<xsl:apply-templates select="." mode="packages.details"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-cycles.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-cycles.html">
|
||||||
|
<xsl:apply-templates select="." mode="cycles.details"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-cycles.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-explanations.html">
|
||||||
|
<xsl:apply-templates select="." mode="explanations"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/all-packages.html">
|
||||||
|
<xsl:apply-templates select="Packages" mode="all.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-cycles.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/all-cycles.html">
|
||||||
|
<xsl:apply-templates select="Cycles" mode="all.cycles"/>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="index.html">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>JDepend Analysis</title>
|
||||||
|
</head>
|
||||||
|
<frameset cols="20%,80%">
|
||||||
|
<frameset rows="30%,70%">
|
||||||
|
<frame src="all-packages.html" name="packageListFrame"/>
|
||||||
|
<frame src="all-cycles.html" name="classListFrame"/>
|
||||||
|
</frameset>
|
||||||
|
<frame src="overview-summary.html" name="classFrame"/>
|
||||||
|
</frameset>
|
||||||
|
<noframes>
|
||||||
|
<h2>Frame Alert</h2>
|
||||||
|
<p>
|
||||||
|
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||||
|
</p>
|
||||||
|
</noframes>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- this is the stylesheet css to use for nearly everything -->
|
||||||
|
<xsl:template name="stylesheet.css">
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
font:normal 68% verdana,arial,helvetica;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
table tr td, tr th {
|
||||||
|
font-size: 68%;
|
||||||
|
}
|
||||||
|
table.details tr th{
|
||||||
|
font-weight: bold;
|
||||||
|
text-align:left;
|
||||||
|
background:#a6caf0;
|
||||||
|
}
|
||||||
|
table.details tr td{
|
||||||
|
background:#eeeee0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height:1.5em;
|
||||||
|
margin-top:0.5em; margin-bottom:1.0em;
|
||||||
|
margin-left:2em;
|
||||||
|
margin-right:2em;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
.Error {
|
||||||
|
font-weight:bold; color:red;
|
||||||
|
}
|
||||||
|
.Failure {
|
||||||
|
font-weight:bold; color:purple;
|
||||||
|
}
|
||||||
|
.Properties {
|
||||||
|
text-align:right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend" mode="overview.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<table width="100%"><tr align="left"><h2>Summary</h2><td>
|
||||||
|
</td><td align="right">
|
||||||
|
[summary]
|
||||||
|
[<a href="overview-packages.html">packages</a>]
|
||||||
|
[<a href="overview-cycles.html">cycles</a>]
|
||||||
|
[<a href="overview-explanations.html">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
<table width="100%" class="details">
|
||||||
|
<tr>
|
||||||
|
<th>Package</th>
|
||||||
|
<th>Total Classes</th>
|
||||||
|
<th><a href="overview-explanations.html#EXnumber">Abstract Classes</a></th>
|
||||||
|
<th><a href="overview-explanations.html#EXnumber">Concrete Classes</a></th>
|
||||||
|
<th><a href="overview-explanations.html#EXafferent">Afferent Couplings</a></th>
|
||||||
|
<th><a href="overview-explanations.html#EXefferent">Efferent Couplings</a></th>
|
||||||
|
<th><a href="overview-explanations.html#EXabstractness">Abstractness</a></th>
|
||||||
|
<th><a href="overview-explanations.html#EXinstability">Instability</a></th>
|
||||||
|
<th><a href="overview-explanations.html#EXdistance">Distance</a></th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<xsl:for-each select="./Packages/Package">
|
||||||
|
<xsl:if test="count(error) = 0">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="@name"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/Ca"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/Ce"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/A"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/I"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/D"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:for-each select="./Packages/Package">
|
||||||
|
<xsl:if test="count(error) > 0">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</td>
|
||||||
|
<td align="left" colspan="8"><xsl:value-of select="error"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend" mode="packages.details">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<table width="100%"><tr align="left"><h2>Packages</h2><td>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="overview-summary.html">summary</a>]
|
||||||
|
[packages]
|
||||||
|
[<a href="overview-cycles.html">cycles</a>]
|
||||||
|
[<a href="overview-explanations.html">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
|
||||||
|
<xsl:for-each select="./Packages/Package">
|
||||||
|
<xsl:if test="count(error) = 0">
|
||||||
|
<h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
|
||||||
|
<xsl:value-of select="@name"/></a></h3>
|
||||||
|
|
||||||
|
<table width="100%"><tr>
|
||||||
|
<td><a href="overview-explanations.html#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
|
||||||
|
<td><a href="overview-explanations.html#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
|
||||||
|
<td><a href="overview-explanations.html#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
|
||||||
|
<td><a href="overview-explanations.html#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
|
||||||
|
<td><a href="overview-explanations.html#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
|
<table width="100%" class="details">
|
||||||
|
<tr>
|
||||||
|
<th>Abstract Classes</th>
|
||||||
|
<th>Concrete Classes</th>
|
||||||
|
<th>Used by Packages</th>
|
||||||
|
<th>Uses Packages</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(AbstractClasses/Class)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="AbstractClasses/Class">
|
||||||
|
<xsl:value-of select="node()"/><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(ConcreteClasses/Class)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="ConcreteClasses/Class">
|
||||||
|
<xsl:value-of select="node()"/><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(UsedBy/Package)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="UsedBy/Package">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||||
|
<xsl:value-of select="node()"/>
|
||||||
|
</a><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(DependsUpon/Package)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="DependsUpon/Package">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||||
|
<xsl:value-of select="node()"/>
|
||||||
|
</a><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
<!-- this is often a long listing; provide a lower navigation table also -->
|
||||||
|
<table width="100%"><tr align="left"><td></td><td align="right">
|
||||||
|
[<a href="overview-summary.html">summary</a>]
|
||||||
|
[packages]
|
||||||
|
[<a href="overview-cycles.html">cycles</a>]
|
||||||
|
[<a href="overview-explanations.html">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend" mode="cycles.details">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<table width="100%"><tr align="left"><h2>Cycles</h2><td>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="overview-summary.html">summary</a>]
|
||||||
|
[<a href="overview-packages.html">packages</a>]
|
||||||
|
[cycles]
|
||||||
|
[<a href="overview-explanations.html">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
<!--<table width="100%"><tr><td>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="#NVsummary">summary</a>]
|
||||||
|
[<a href="#NVpackages">packages</a>]
|
||||||
|
[<a href="#NVcycles">cycles</a>]
|
||||||
|
[<a href="#NVexplanations">explanations</a>]
|
||||||
|
</td></tr></table> -->
|
||||||
|
|
||||||
|
<xsl:if test="count(Cycles/Package) = 0">
|
||||||
|
<p>There are no cyclic dependancies.</p>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="Cycles/Package">
|
||||||
|
<h3><a><xsl:attribute name="name">#CY<xsl:value-of select="@Name"/></xsl:attribute><xsl:value-of select="@Name"/></a></h3><p>
|
||||||
|
<xsl:for-each select="Package">
|
||||||
|
<xsl:value-of select="."/><br/>
|
||||||
|
</xsl:for-each></p>
|
||||||
|
</xsl:for-each>
|
||||||
|
<!-- this is often a long listing; provide a lower navigation table also -->
|
||||||
|
<table width="100%"><tr align="left"><td></td><td align="right">
|
||||||
|
[<a href="overview-summary.html">summary</a>]
|
||||||
|
[<a href="overview-packages.html">packages</a>]
|
||||||
|
[cycles]
|
||||||
|
[<a href="overview-explanations.html">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend" mode="explanations">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
|
||||||
|
<table width="100%"><tr align="left"><h2>Explanations</h2><td>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="overview-summary.html">summary</a>]
|
||||||
|
[<a href="overview-packages.html">packages</a>]
|
||||||
|
[<a href="overview-cycles.html">cycles</a>]
|
||||||
|
[explanations]
|
||||||
|
</td></tr></table>
|
||||||
|
|
||||||
|
<p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
|
||||||
|
|
||||||
|
<h3><a name="EXnumber">Number of Classes</a></h3>
|
||||||
|
<p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
|
||||||
|
<h3><a name="EXafferent">Afferent Couplings</a></h3>
|
||||||
|
<p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
|
||||||
|
<h3><a name="EXefferent">Efferent Couplings</a></h3>
|
||||||
|
<p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
|
||||||
|
<h3><a name="EXabstractness">Abstractness</a></h3>
|
||||||
|
<p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
|
||||||
|
<p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
|
||||||
|
<h3><a name="EXinstability">Instability</a></h3>
|
||||||
|
<p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
|
||||||
|
<p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
|
||||||
|
<h3><a name="EXdistance">Distance</a></h3>
|
||||||
|
<p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
|
||||||
|
<p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
|
||||||
|
<p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an html file that contains a link to all package links in overview-packages.html.
|
||||||
|
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||||
|
-->
|
||||||
|
<xsl:template match="JDepend/Packages" mode="all.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
|
||||||
|
[<a href="overview-summary.html" target="classFrame">summary</a>]
|
||||||
|
[<a href="overview-packages.html" target="classFrame">packages</a>]
|
||||||
|
[<a href="overview-cycles.html" target="classFrame">cycles</a>]
|
||||||
|
[<a href="overview-explanations.html" target="classFrame">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
<h2>Packages</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select="Package[count(error)=0]" mode="all.packages.link">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
<xsl:apply-templates select="Package[count(error) > 0]" mode="all.packages.nolink">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend/Packages/Package" mode="all.packages.link">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="overview-packages.html#PK{@name}" target="classFrame">
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
I do not know JDepend enough to know if every error results in a non-analyzed package,
|
||||||
|
but that is how I am presenting it to the viewer. This may need to change.
|
||||||
|
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||||
|
-->
|
||||||
|
<xsl:template match="JDepend/Packages/Package" mode="all.packages.nolink">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
Not Analyzed: <xsl:value-of select="@name"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an html file that contains a link to all package links in overview-cycles.html.
|
||||||
|
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||||
|
-->
|
||||||
|
<xsl:template match="JDepend/Cycles" mode="all.cycles">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
|
||||||
|
[<a href="overview-summary.html" target="classFrame">summary</a>]
|
||||||
|
[<a href="overview-packages.html" target="classFrame">packages</a>]
|
||||||
|
[<a href="overview-cycles.html" target="classFrame">cycles</a>]
|
||||||
|
[<a href="overview-explanations.html" target="classFrame">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
<h2>Cycles</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select="Package" mode="all.cycles">
|
||||||
|
<xsl:sort select="@Name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend/Cycles/Package" mode="all.cycles">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="overview-cycles.html#CY{@Name}" target="classFrame"><xsl:value-of select="@Name"/></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Page HEADER -->
|
||||||
|
<xsl:template name="pageHeader">
|
||||||
|
<h1>JDepend Analysis</h1>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="left"></td>
|
||||||
|
<td align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr size="1"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,276 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||||
|
|
||||||
|
<xsl:template match="JDepend">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>JDepend Analysis</title>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
font:normal 68% verdana,arial,helvetica;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
table tr td, tr th {
|
||||||
|
font-size: 68%;
|
||||||
|
}
|
||||||
|
table.details tr th{
|
||||||
|
font-weight: bold;
|
||||||
|
text-align:left;
|
||||||
|
background:#a6caf0;
|
||||||
|
}
|
||||||
|
table.details tr td{
|
||||||
|
background:#eeeee0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height:1.5em;
|
||||||
|
margin-top:0.5em; margin-bottom:1.0em;
|
||||||
|
margin-left:2em;
|
||||||
|
margin-right:2em;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
.Error {
|
||||||
|
font-weight:bold; color:red;
|
||||||
|
}
|
||||||
|
.Failure {
|
||||||
|
font-weight:bold; color:purple;
|
||||||
|
}
|
||||||
|
.Properties {
|
||||||
|
text-align:right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!--h1>JDepend Report</h1>
|
||||||
|
<ul>
|
||||||
|
<xsl:for-each select="./Packages/Package">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
<li><xsl:value-of select="@name"/></li>
|
||||||
|
</xsl:for-each>
|
||||||
|
</ul-->
|
||||||
|
|
||||||
|
<h1><a name="top">JDepend Analysis</a></h1>
|
||||||
|
<p align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</p>
|
||||||
|
<hr size="2" />
|
||||||
|
|
||||||
|
<table width="100%"><tr><td>
|
||||||
|
<a name="NVsummary"><h2>Summary</h2></a>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="#NVsummary">summary</a>]
|
||||||
|
[<a href="#NVpackages">packages</a>]
|
||||||
|
[<a href="#NVcycles">cycles</a>]
|
||||||
|
[<a href="#NVexplanations">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
|
||||||
|
<table width="100%" class="details">
|
||||||
|
<tr>
|
||||||
|
<th>Package</th>
|
||||||
|
<th>Total Classes</th>
|
||||||
|
<th><a href="#EXnumber">Abstract Classes</a></th>
|
||||||
|
<th><a href="#EXnumber">Concrete Classes</a></th>
|
||||||
|
<th><a href="#EXafferent">Afferent Couplings</a></th>
|
||||||
|
<th><a href="#EXefferent">Efferent Couplings</a></th>
|
||||||
|
<th><a href="#EXabstractness">Abstractness</a></th>
|
||||||
|
<th><a href="#EXinstability">Instability</a></th>
|
||||||
|
<th><a href="#EXdistance">Distance</a></th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<xsl:for-each select="./Packages/Package">
|
||||||
|
<xsl:if test="count(error) = 0">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">#PK<xsl:value-of select="@name"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/Ca"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/Ce"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/A"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/I"/></td>
|
||||||
|
<td align="right"><xsl:value-of select="Stats/D"/></td>
|
||||||
|
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:for-each select="./Packages/Package">
|
||||||
|
<xsl:if test="count(error) > 0">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</td>
|
||||||
|
<td align="left" colspan="8"><xsl:value-of select="error"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%"><tr><td>
|
||||||
|
<a name="NVpackages"><h2>Packages</h2></a>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="#NVsummary">summary</a>]
|
||||||
|
[<a href="#NVpackages">packages</a>]
|
||||||
|
[<a href="#NVcycles">cycles</a>]
|
||||||
|
[<a href="#NVexplanations">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
|
||||||
|
<xsl:for-each select="./Packages/Package">
|
||||||
|
<xsl:if test="count(error) = 0">
|
||||||
|
<h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
|
||||||
|
<xsl:value-of select="@name"/></a></h3>
|
||||||
|
|
||||||
|
<table width="100%"><tr>
|
||||||
|
<td><a href="#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
|
||||||
|
<td><a href="#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
|
||||||
|
<td><a href="#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
|
||||||
|
<td><a href="#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
|
||||||
|
<td><a href="#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
|
<table width="100%" class="details">
|
||||||
|
<tr>
|
||||||
|
<th>Abstract Classes</th>
|
||||||
|
<th>Concrete Classes</th>
|
||||||
|
<th>Used by Packages</th>
|
||||||
|
<th>Uses Packages</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(AbstractClasses/Class)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="AbstractClasses/Class">
|
||||||
|
<xsl:value-of select="node()"/><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(ConcreteClasses/Class)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="ConcreteClasses/Class">
|
||||||
|
<xsl:value-of select="node()"/><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(UsedBy/Package)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="UsedBy/Package">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||||
|
<xsl:value-of select="node()"/>
|
||||||
|
</a><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
<td valign="top" width="25%">
|
||||||
|
<xsl:if test="count(DependsUpon/Package)=0">
|
||||||
|
<i>None</i>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="DependsUpon/Package">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||||
|
<xsl:value-of select="node()"/>
|
||||||
|
</a><br/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<table width="100%"><tr><td>
|
||||||
|
<a name="NVcycles"><h2>Cycles</h2></a>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="#NVsummary">summary</a>]
|
||||||
|
[<a href="#NVpackages">packages</a>]
|
||||||
|
[<a href="#NVcycles">cycles</a>]
|
||||||
|
[<a href="#NVexplanations">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
|
||||||
|
<xsl:if test="count(Cycles/Package) = 0">
|
||||||
|
<p>There are no cyclic dependancies.</p>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:for-each select="Cycles/Package">
|
||||||
|
<h3><xsl:value-of select="@Name"/></h3><p>
|
||||||
|
<xsl:for-each select="Package">
|
||||||
|
<xsl:value-of select="."/><br/>
|
||||||
|
</xsl:for-each></p>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<table width="100%"><tr><td>
|
||||||
|
<a name="NVexplanations"><h2>Explanations</h2></a>
|
||||||
|
</td><td align="right">
|
||||||
|
[<a href="#NVsummary">summary</a>]
|
||||||
|
[<a href="#NVpackages">packages</a>]
|
||||||
|
[<a href="#NVcycles">cycles</a>]
|
||||||
|
[<a href="#NVexplanations">explanations</a>]
|
||||||
|
</td></tr></table>
|
||||||
|
|
||||||
|
<p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
|
||||||
|
|
||||||
|
<h3><a name="EXnumber">Number of Classes</a></h3>
|
||||||
|
<p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
|
||||||
|
<h3><a name="EXafferent">Afferent Couplings</a></h3>
|
||||||
|
<p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
|
||||||
|
<h3><a name="EXefferent">Efferent Couplings</a></h3>
|
||||||
|
<p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
|
||||||
|
<h3><a name="EXabstractness">Abstractness</a></h3>
|
||||||
|
<p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
|
||||||
|
<p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
|
||||||
|
<h3><a name="EXinstability">Instability</a></h3>
|
||||||
|
<p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
|
||||||
|
<p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
|
||||||
|
<h3><a name="EXdistance">Distance</a></h3>
|
||||||
|
<p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
|
||||||
|
<p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
|
||||||
|
<p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,719 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||||
|
xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
|
||||||
|
extension-element-prefixes="redirect">
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator=","/>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Sample stylesheet to be used with Ant JUnitReport output.
|
||||||
|
|
||||||
|
It creates a set of HTML files a la javadoc where you can browse easily
|
||||||
|
through all packages and classes.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xsl:param name="output.dir" select="'.'"/>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="testsuites">
|
||||||
|
<!-- create the index.html -->
|
||||||
|
<redirect:write file="{$output.dir}/index.html">
|
||||||
|
<xsl:call-template name="index.html"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the stylesheet.css -->
|
||||||
|
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||||
|
<xsl:call-template name="stylesheet.css"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||||
|
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-classes.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.classes"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- process all packages -->
|
||||||
|
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||||
|
<xsl:call-template name="package">
|
||||||
|
<xsl:with-param name="name" select="@package"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="package">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<xsl:variable name="package.dir">
|
||||||
|
<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
|
||||||
|
<xsl:if test="$name = ''">.</xsl:if>
|
||||||
|
</xsl:variable>
|
||||||
|
<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
|
||||||
|
<!-- create a classes-list.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||||
|
<xsl:call-template name="classes.list">
|
||||||
|
<xsl:with-param name="name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create a package-summary.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||||
|
<xsl:call-template name="package.summary">
|
||||||
|
<xsl:with-param name="name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- for each class, creates a @name.html -->
|
||||||
|
<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
|
||||||
|
<xsl:for-each select="/testsuites/testsuite[@package = $name]">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
|
||||||
|
<xsl:apply-templates select="." mode="class.details"/>
|
||||||
|
</redirect:write>
|
||||||
|
<xsl:if test="string-length(./system-out)!=0">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@name}-out.txt">
|
||||||
|
<xsl:value-of select="./system-out" />
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="string-length(./system-err)!=0">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@name}-err.txt">
|
||||||
|
<xsl:value-of select="./system-err" />
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="index.html">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Results.</title>
|
||||||
|
</head>
|
||||||
|
<frameset cols="20%,80%">
|
||||||
|
<frameset rows="30%,70%">
|
||||||
|
<frame src="overview-frame.html" name="packageListFrame"/>
|
||||||
|
<frame src="allclasses-frame.html" name="classListFrame"/>
|
||||||
|
</frameset>
|
||||||
|
<frame src="overview-summary.html" name="classFrame"/>
|
||||||
|
<noframes>
|
||||||
|
<h2>Frame Alert</h2>
|
||||||
|
<p>
|
||||||
|
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||||
|
</p>
|
||||||
|
</noframes>
|
||||||
|
</frameset>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- this is the stylesheet css to use for nearly everything -->
|
||||||
|
<xsl:template name="stylesheet.css">
|
||||||
|
body {
|
||||||
|
font:normal 68% verdana,arial,helvetica;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
table tr td, table tr th {
|
||||||
|
font-size: 68%;
|
||||||
|
}
|
||||||
|
table.details tr th{
|
||||||
|
font-weight: bold;
|
||||||
|
text-align:left;
|
||||||
|
background:#a6caf0;
|
||||||
|
}
|
||||||
|
table.details tr td{
|
||||||
|
background:#eeeee0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height:1.5em;
|
||||||
|
margin-top:0.5em; margin-bottom:1.0em;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
.Error {
|
||||||
|
font-weight:bold; color:red;
|
||||||
|
}
|
||||||
|
.Failure {
|
||||||
|
font-weight:bold; color:purple;
|
||||||
|
}
|
||||||
|
.Properties {
|
||||||
|
text-align:right;
|
||||||
|
}
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ======================================================================
|
||||||
|
This page is created for every testsuite class.
|
||||||
|
It prints a summary of the testsuite and detailed information about
|
||||||
|
testcase methods.
|
||||||
|
====================================================================== -->
|
||||||
|
<xsl:template match="testsuite" mode="class.details">
|
||||||
|
<xsl:variable name="package.name" select="@package"/>
|
||||||
|
<xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<script type="text/javascript" language="JavaScript">
|
||||||
|
var TestCases = new Array();
|
||||||
|
var cur;
|
||||||
|
<xsl:apply-templates select="properties"/>
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" language="JavaScript"><![CDATA[
|
||||||
|
function displayProperties (name) {
|
||||||
|
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
|
||||||
|
var doc = win.document;
|
||||||
|
doc.open();
|
||||||
|
doc.write("<html><head><title>Properties of " + name + "</title>");
|
||||||
|
doc.write("<style type=\"text/css\">");
|
||||||
|
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
|
||||||
|
doc.write("table tr td, table tr th { font-size: 68%; }");
|
||||||
|
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
|
||||||
|
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
|
||||||
|
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
|
||||||
|
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
|
||||||
|
doc.write("</style>");
|
||||||
|
doc.write("</head><body>");
|
||||||
|
doc.write("<h3>Properties of " + name + "</h3>");
|
||||||
|
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
|
||||||
|
doc.write("<table class='properties'>");
|
||||||
|
doc.write("<tr><th>Name</th><th>Value</th></tr>");
|
||||||
|
for (prop in TestCases[name]) {
|
||||||
|
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
|
||||||
|
}
|
||||||
|
doc.write("</table>");
|
||||||
|
doc.write("</body></html>");
|
||||||
|
doc.close();
|
||||||
|
win.focus();
|
||||||
|
}
|
||||||
|
]]>
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Class <xsl:value-of select="$class.name"/></h3>
|
||||||
|
|
||||||
|
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="print.test"/>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>Tests</h2>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testcase.test.header"/>
|
||||||
|
<!--
|
||||||
|
test can even not be started at all (failure to load the class)
|
||||||
|
so report the error directly
|
||||||
|
-->
|
||||||
|
<xsl:if test="./error">
|
||||||
|
<tr class="Error">
|
||||||
|
<td colspan="4"><xsl:apply-templates select="./error"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:apply-templates select="./testcase" mode="print.test"/>
|
||||||
|
</table>
|
||||||
|
<div class="Properties">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
|
||||||
|
Properties »
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<xsl:if test="string-length(./system-out)!=0">
|
||||||
|
<div class="Properties">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">./<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
|
||||||
|
System.out »
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="string-length(./system-err)!=0">
|
||||||
|
<div class="Properties">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">./<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
|
||||||
|
System.err »
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</xsl:if>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Write properties into a JavaScript data structure.
|
||||||
|
This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
|
||||||
|
-->
|
||||||
|
<xsl:template match="properties">
|
||||||
|
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
|
||||||
|
<xsl:for-each select="property">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ======================================================================
|
||||||
|
This page is created for every package.
|
||||||
|
It prints the name of all classes that belongs to this package.
|
||||||
|
@param name the package name to print classes.
|
||||||
|
====================================================================== -->
|
||||||
|
<!-- list of classes in a package -->
|
||||||
|
<xsl:template name="classes.list">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Classes: <xsl:value-of select="$name"/></title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<h2><a href="package-summary.html" target="classFrame">
|
||||||
|
<xsl:value-of select="$name"/>
|
||||||
|
<xsl:if test="$name = ''"><none></xsl:if>
|
||||||
|
</a></h2>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:for-each select="/testsuites/testsuite[./@package = $name]">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an all-classes.html file that contains a link to all package-summary.html
|
||||||
|
on each class.
|
||||||
|
-->
|
||||||
|
<xsl:template match="testsuites" mode="all.classes">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>All Unit Test Classes</title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select="testsuite" mode="all.classes">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testsuite" mode="all.classes">
|
||||||
|
<xsl:variable name="package.name" select="@package"/>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a target="classFrame">
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:if test="not($package.name='')">
|
||||||
|
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||||
|
</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an html file that contains a link to all package-summary.html files on
|
||||||
|
each package existing on testsuites.
|
||||||
|
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||||
|
-->
|
||||||
|
<xsl:template match="testsuites" mode="all.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>All Unit Test Packages</title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||||
|
<h2>Packages</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
|
||||||
|
<xsl:sort select="@package"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testsuite" mode="all.packages">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
|
||||||
|
<xsl:value-of select="@package"/>
|
||||||
|
<xsl:if test="@package = ''"><none></xsl:if>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="testsuites" mode="overview.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Results: Summary</title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h2>Summary</h2>
|
||||||
|
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
|
||||||
|
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
|
||||||
|
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
|
||||||
|
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
|
||||||
|
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<tr valign="top">
|
||||||
|
<th>Tests</th>
|
||||||
|
<th>Failures</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
<th>Success rate</th>
|
||||||
|
<th>Time</th>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||||
|
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>Pass</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><xsl:value-of select="$testCount"/></td>
|
||||||
|
<td><xsl:value-of select="$failureCount"/></td>
|
||||||
|
<td><xsl:value-of select="$errorCount"/></td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-percent">
|
||||||
|
<xsl:with-param name="value" select="$successRate"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="$timeCount"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table border="0" width="95%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: justify;">
|
||||||
|
Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>Packages</h2>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
<xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||||
|
<xsl:sort select="@package" order="ascending"/>
|
||||||
|
<!-- get the node set containing all testsuites that have the same package -->
|
||||||
|
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
|
||||||
|
<tr valign="top">
|
||||||
|
<!-- display a failure if there is any failure/error in the package -->
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="sum($insamepackage/@errors) > 0">Error</xsl:when>
|
||||||
|
<xsl:when test="sum($insamepackage/@failures) > 0">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>Pass</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><a href="./{translate(@package,'.','/')}/package-summary.html">
|
||||||
|
<xsl:value-of select="@package"/>
|
||||||
|
<xsl:if test="@package = ''"><none></xsl:if>
|
||||||
|
</a></td>
|
||||||
|
<td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
|
||||||
|
<td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
|
||||||
|
<td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="sum($insamepackage/@time)"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td><xsl:value-of select="$insamepackage/@timestamp"/></td>
|
||||||
|
<td><xsl:value-of select="$insamepackage/@hostname"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="package.summary">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Package <xsl:value-of select="$name"/></h3>
|
||||||
|
|
||||||
|
<!--table border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="class.metrics.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="print.metrics"/>
|
||||||
|
</table-->
|
||||||
|
|
||||||
|
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
|
||||||
|
<xsl:if test="count($insamepackage) > 0">
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<p>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
<xsl:apply-templates select="$insamepackage" mode="print.test">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</p>
|
||||||
|
</xsl:if>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
transform string like a.b.c to ../../../
|
||||||
|
@param path the path to transform into a descending directory path
|
||||||
|
-->
|
||||||
|
<xsl:template name="path">
|
||||||
|
<xsl:param name="path"/>
|
||||||
|
<xsl:if test="contains($path,'.')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
<xsl:call-template name="path">
|
||||||
|
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- create the link to the stylesheet based on the package name -->
|
||||||
|
<xsl:template name="create.stylesheet.link">
|
||||||
|
<xsl:param name="package.name"/>
|
||||||
|
<link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Page HEADER -->
|
||||||
|
<xsl:template name="pageHeader">
|
||||||
|
<h1>Unit Test Results</h1>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="left"></td>
|
||||||
|
<td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://ant.apache.org/">Ant</a>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr size="1"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- class header -->
|
||||||
|
<xsl:template name="testsuite.test.header">
|
||||||
|
<tr valign="top">
|
||||||
|
<th width="80%">Name</th>
|
||||||
|
<th>Tests</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
<th>Failures</th>
|
||||||
|
<th nowrap="nowrap">Time(s)</th>
|
||||||
|
<th nowrap="nowrap">Time Stamp</th>
|
||||||
|
<th>Host</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- method header -->
|
||||||
|
<xsl:template name="testcase.test.header">
|
||||||
|
<tr valign="top">
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Status</th>
|
||||||
|
<th width="80%">Type</th>
|
||||||
|
<th nowrap="nowrap">Time(s)</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- class information -->
|
||||||
|
<xsl:template match="testsuite" mode="print.test">
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@errors[.> 0]">Error</xsl:when>
|
||||||
|
<xsl:when test="@failures[.> 0]">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>Pass</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
|
||||||
|
<td><xsl:apply-templates select="@tests"/></td>
|
||||||
|
<td><xsl:apply-templates select="@errors"/></td>
|
||||||
|
<td><xsl:apply-templates select="@failures"/></td>
|
||||||
|
<td><xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="@time"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td><xsl:apply-templates select="@timestamp"/></td>
|
||||||
|
<td><xsl:apply-templates select="@hostname"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testcase" mode="print.test">
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="error">Error</xsl:when>
|
||||||
|
<xsl:when test="failure">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>TableRowColor</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><xsl:value-of select="@name"/></td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="failure">
|
||||||
|
<td>Failure</td>
|
||||||
|
<td><xsl:apply-templates select="failure"/></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="error">
|
||||||
|
<td>Error</td>
|
||||||
|
<td><xsl:apply-templates select="error"/></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<td>Success</td>
|
||||||
|
<td></td>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="@time"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Note : the below template error and failure are the same style
|
||||||
|
so just call the same style store in the toolkit template -->
|
||||||
|
<xsl:template match="failure">
|
||||||
|
<xsl:call-template name="display-failures"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="error">
|
||||||
|
<xsl:call-template name="display-failures"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Style for the error and failure in the testcase template -->
|
||||||
|
<xsl:template name="display-failures">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="not(@message)">N/A</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="@message"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<!-- display the stacktrace -->
|
||||||
|
<br/><br/>
|
||||||
|
<code>
|
||||||
|
<xsl:call-template name="br-replace">
|
||||||
|
<xsl:with-param name="word" select="."/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</code>
|
||||||
|
<!-- the latter is better but might be problematic for non-21" monitors... -->
|
||||||
|
<!--pre><xsl:value-of select="."/></pre-->
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="JS-escape">
|
||||||
|
<xsl:param name="string"/>
|
||||||
|
<xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
|
||||||
|
<xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/>
|
||||||
|
<xsl:value-of select="$tmp2"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
template that will convert a carriage return into a br tag
|
||||||
|
@param word the text from which to convert CR to BR tag
|
||||||
|
-->
|
||||||
|
<xsl:template name="br-replace">
|
||||||
|
<xsl:param name="word"/>
|
||||||
|
<xsl:param name="br"><br/></xsl:param>
|
||||||
|
<xsl:value-of select='stringutils:replace(string($word),"
",$br)'/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="display-time">
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:value-of select="format-number($value,'0.000')"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="display-percent">
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:value-of select="format-number($value,'0.00%')"/>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,877 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:redirect="http://xml.apache.org/xalan/redirect"
|
||||||
|
xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
|
||||||
|
extension-element-prefixes="redirect">
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator=","/>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Sample stylesheet to be used with Ant JUnitReport output.
|
||||||
|
|
||||||
|
It creates a set of HTML files a la javadoc where you can browse easily
|
||||||
|
through all packages and classes.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xsl:param name="output.dir" select="'.'"/>
|
||||||
|
<xsl:param name="TITLE">Unit Test Results.</xsl:param>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="testsuites">
|
||||||
|
<!-- create the index.html -->
|
||||||
|
<redirect:write file="{$output.dir}/index.html">
|
||||||
|
<xsl:call-template name="index.html"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the stylesheet.css -->
|
||||||
|
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||||
|
<xsl:call-template name="stylesheet.css"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||||
|
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-classes.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.classes"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-tests.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/all-tests.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.tests"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the alltests-fails.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/alltests-fails.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.tests">
|
||||||
|
<xsl:with-param name="type" select="'fails'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the alltests-errors.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/alltests-errors.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.tests">
|
||||||
|
<xsl:with-param name="type" select="'errors'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- process all packages -->
|
||||||
|
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||||
|
<xsl:call-template name="package">
|
||||||
|
<xsl:with-param name="name" select="@package"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="package">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<xsl:variable name="package.dir">
|
||||||
|
<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
|
||||||
|
<xsl:if test="$name = ''">.</xsl:if>
|
||||||
|
</xsl:variable>
|
||||||
|
<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
|
||||||
|
<!-- create a classes-list.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||||
|
<xsl:call-template name="classes.list">
|
||||||
|
<xsl:with-param name="name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create a package-summary.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||||
|
<xsl:call-template name="package.summary">
|
||||||
|
<xsl:with-param name="name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- for each class, creates a @name.html -->
|
||||||
|
<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
|
||||||
|
<xsl:for-each select="/testsuites/testsuite[@package = $name]">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}.html">
|
||||||
|
<xsl:apply-templates select="." mode="class.details"/>
|
||||||
|
</redirect:write>
|
||||||
|
<xsl:if test="string-length(./system-out)!=0">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-out.txt">
|
||||||
|
<xsl:value-of disable-output-escaping="yes" select="./system-out"/>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="string-length(./system-err)!=0">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-err.txt">
|
||||||
|
<xsl:value-of disable-output-escaping="yes" select="./system-err"/>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="@failures != 0">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-fails.html">
|
||||||
|
<xsl:apply-templates select="." mode="class.details">
|
||||||
|
<xsl:with-param name="type" select="'fails'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="@errors != 0">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-errors.html">
|
||||||
|
<xsl:apply-templates select="." mode="class.details">
|
||||||
|
<xsl:with-param name="type" select="'errors'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="index.html">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><xsl:value-of select="$TITLE"/></title>
|
||||||
|
</head>
|
||||||
|
<frameset cols="20%,80%">
|
||||||
|
<frameset rows="30%,70%">
|
||||||
|
<frame src="overview-frame.html" name="packageListFrame"/>
|
||||||
|
<frame src="allclasses-frame.html" name="classListFrame"/>
|
||||||
|
</frameset>
|
||||||
|
<frame src="overview-summary.html" name="classFrame"/>
|
||||||
|
<noframes>
|
||||||
|
<h2>Frame Alert</h2>
|
||||||
|
<p>
|
||||||
|
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||||
|
</p>
|
||||||
|
</noframes>
|
||||||
|
</frameset>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- this is the stylesheet css to use for nearly everything -->
|
||||||
|
<xsl:template name="stylesheet.css">
|
||||||
|
body {
|
||||||
|
font:normal 68% verdana,arial,helvetica;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
table tr td, table tr th {
|
||||||
|
font-size: 68%;
|
||||||
|
}
|
||||||
|
table.details tr th{
|
||||||
|
font-weight: bold;
|
||||||
|
text-align:left;
|
||||||
|
background:#a6caf0;
|
||||||
|
}
|
||||||
|
table.details tr td{
|
||||||
|
background:#eeeee0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height:1.5em;
|
||||||
|
margin-top:0.5em; margin-bottom:1.0em;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
.Error {
|
||||||
|
font-weight:bold; color:red;
|
||||||
|
}
|
||||||
|
.Failure {
|
||||||
|
font-weight:bold; color:purple;
|
||||||
|
}
|
||||||
|
.Properties {
|
||||||
|
text-align:right;
|
||||||
|
}
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Create list of all/failed/errored tests -->
|
||||||
|
<xsl:template match="testsuites" mode="all.tests">
|
||||||
|
<xsl:param name="type" select="'all'"/>
|
||||||
|
<html>
|
||||||
|
<xsl:variable name="title">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$type = 'fails'">
|
||||||
|
<xsl:text>All Failures</xsl:text>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$type = 'errors'">
|
||||||
|
<xsl:text>All Errors</xsl:text>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:text>All Tests</xsl:text>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:variable>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Results: <xsl:value-of select="$title"/></title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h2><xsl:value-of select="$title"/></h2>
|
||||||
|
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testcase.test.header">
|
||||||
|
<xsl:with-param name="show.class" select="'yes'"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<!--
|
||||||
|
test can even not be started at all (failure to load the class)
|
||||||
|
so report the error directly
|
||||||
|
-->
|
||||||
|
<xsl:if test="./error">
|
||||||
|
<tr class="Error">
|
||||||
|
<td colspan="4">
|
||||||
|
<xsl:apply-templates select="./error"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$type = 'fails'">
|
||||||
|
<xsl:apply-templates select=".//testcase[failure]" mode="print.test">
|
||||||
|
<xsl:with-param name="show.class" select="'yes'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$type = 'errors'">
|
||||||
|
<xsl:apply-templates select=".//testcase[error]" mode="print.test">
|
||||||
|
<xsl:with-param name="show.class" select="'yes'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates select=".//testcase" mode="print.test">
|
||||||
|
<xsl:with-param name="show.class" select="'yes'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ======================================================================
|
||||||
|
This page is created for every testsuite class.
|
||||||
|
It prints a summary of the testsuite and detailed information about
|
||||||
|
testcase methods.
|
||||||
|
====================================================================== -->
|
||||||
|
<xsl:template match="testsuite" mode="class.details">
|
||||||
|
<xsl:param name="type" select="'all'"/>
|
||||||
|
<xsl:variable name="package.name" select="@package"/>
|
||||||
|
<xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<script type="text/javascript" language="JavaScript">
|
||||||
|
var TestCases = new Array();
|
||||||
|
var cur;
|
||||||
|
<xsl:apply-templates select="properties"/>
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" language="JavaScript"><![CDATA[
|
||||||
|
function displayProperties (name) {
|
||||||
|
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
|
||||||
|
var doc = win.document;
|
||||||
|
doc.open();
|
||||||
|
doc.write("<html><head><title>Properties of " + name + "</title>");
|
||||||
|
doc.write("<style type=\"text/css\">");
|
||||||
|
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
|
||||||
|
doc.write("table tr td, table tr th { font-size: 68%; }");
|
||||||
|
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
|
||||||
|
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
|
||||||
|
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
|
||||||
|
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
|
||||||
|
doc.write("</style>");
|
||||||
|
doc.write("</head><body>");
|
||||||
|
doc.write("<h3>Properties of " + name + "</h3>");
|
||||||
|
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
|
||||||
|
doc.write("<table class='properties'>");
|
||||||
|
doc.write("<tr><th>Name</th><th>Value</th></tr>");
|
||||||
|
for (prop in TestCases[name]) {
|
||||||
|
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
|
||||||
|
}
|
||||||
|
doc.write("</table>");
|
||||||
|
doc.write("</body></html>");
|
||||||
|
doc.close();
|
||||||
|
win.focus();
|
||||||
|
}
|
||||||
|
]]>
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Class <xsl:value-of select="$class.name"/></h3>
|
||||||
|
|
||||||
|
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="print.test"/>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$type = 'fails'">
|
||||||
|
<h2>Failures</h2>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$type = 'errors'">
|
||||||
|
<h2>Errors</h2>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<h2>Tests</h2>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testcase.test.header"/>
|
||||||
|
<!--
|
||||||
|
test can even not be started at all (failure to load the class)
|
||||||
|
so report the error directly
|
||||||
|
-->
|
||||||
|
<xsl:if test="./error">
|
||||||
|
<tr class="Error">
|
||||||
|
<td colspan="4"><xsl:apply-templates select="./error"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$type = 'fails'">
|
||||||
|
<xsl:apply-templates select="./testcase[failure]" mode="print.test"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="$type = 'errors'">
|
||||||
|
<xsl:apply-templates select="./testcase[error]" mode="print.test"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates select="./testcase" mode="print.test"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</table>
|
||||||
|
<div class="Properties">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
|
||||||
|
Properties »
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<xsl:if test="string-length(./system-out)!=0">
|
||||||
|
<div class="Properties">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
|
||||||
|
System.out »
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="string-length(./system-err)!=0">
|
||||||
|
<div class="Properties">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
|
||||||
|
System.err »
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</xsl:if>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Write properties into a JavaScript data structure.
|
||||||
|
This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
|
||||||
|
-->
|
||||||
|
<xsl:template match="properties">
|
||||||
|
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
|
||||||
|
<xsl:for-each select="property">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ======================================================================
|
||||||
|
This page is created for every package.
|
||||||
|
It prints the name of all classes that belongs to this package.
|
||||||
|
@param name the package name to print classes.
|
||||||
|
====================================================================== -->
|
||||||
|
<!-- list of classes in a package -->
|
||||||
|
<xsl:template name="classes.list">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Classes: <xsl:value-of select="$name"/></title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<h2><a href="package-summary.html" target="classFrame">
|
||||||
|
<xsl:value-of select="$name"/>
|
||||||
|
<xsl:if test="$name = ''"><none></xsl:if>
|
||||||
|
</a></h2>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:for-each select="/testsuites/testsuite[./@package = $name]">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="{@id}_{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an all-classes.html file that contains a link to all package-summary.html
|
||||||
|
on each class.
|
||||||
|
-->
|
||||||
|
<xsl:template match="testsuites" mode="all.classes">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>All Unit Test Classes</title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select="testsuite" mode="all.classes">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testsuite" mode="all.classes">
|
||||||
|
<xsl:variable name="package.name" select="@package"/>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a target="classFrame">
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:if test="not($package.name='')">
|
||||||
|
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||||
|
</xsl:if><xsl:value-of select="@id"/>_<xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an html file that contains a link to all package-summary.html files on
|
||||||
|
each package existing on testsuites.
|
||||||
|
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||||
|
-->
|
||||||
|
<xsl:template match="testsuites" mode="all.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>All Unit Test Packages</title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||||
|
<h2>Packages</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
|
||||||
|
<xsl:sort select="@package"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testsuite" mode="all.packages">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
|
||||||
|
<xsl:value-of select="@package"/>
|
||||||
|
<xsl:if test="@package = ''"><none></xsl:if>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="testsuites" mode="overview.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Unit Test Results: Summary</title>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h2>Summary</h2>
|
||||||
|
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
|
||||||
|
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
|
||||||
|
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
|
||||||
|
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
|
||||||
|
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<tr valign="top">
|
||||||
|
<th>Tests</th>
|
||||||
|
<th>Failures</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
<th>Success rate</th>
|
||||||
|
<th>Time</th>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||||
|
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>Pass</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><a title="Display all tests" href="all-tests.html"><xsl:value-of select="$testCount"/></a></td>
|
||||||
|
<td><a title="Display all failures" href="alltests-fails.html"><xsl:value-of select="$failureCount"/></a></td>
|
||||||
|
<td><a title="Display all errors" href="alltests-errors.html"><xsl:value-of select="$errorCount"/></a></td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-percent">
|
||||||
|
<xsl:with-param name="value" select="$successRate"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="$timeCount"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table border="0" width="95%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: justify;">
|
||||||
|
Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>Packages</h2>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
<xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||||
|
<xsl:sort select="@package" order="ascending"/>
|
||||||
|
<!-- get the node set containing all testsuites that have the same package -->
|
||||||
|
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
|
||||||
|
<tr valign="top">
|
||||||
|
<!-- display a failure if there is any failure/error in the package -->
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="sum($insamepackage/@errors) > 0">Error</xsl:when>
|
||||||
|
<xsl:when test="sum($insamepackage/@failures) > 0">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>Pass</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><a href="./{translate(@package,'.','/')}/package-summary.html">
|
||||||
|
<xsl:value-of select="@package"/>
|
||||||
|
<xsl:if test="@package = ''"><none></xsl:if>
|
||||||
|
</a></td>
|
||||||
|
<td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
|
||||||
|
<td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
|
||||||
|
<td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="sum($insamepackage/@time)"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td><xsl:value-of select="$insamepackage/@timestamp"/></td>
|
||||||
|
<td><xsl:value-of select="$insamepackage/@hostname"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="package.summary">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Package <xsl:value-of select="$name"/></h3>
|
||||||
|
|
||||||
|
<!--table border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="class.metrics.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="print.metrics"/>
|
||||||
|
</table-->
|
||||||
|
|
||||||
|
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
|
||||||
|
<xsl:if test="count($insamepackage) > 0">
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<p>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
<xsl:apply-templates select="$insamepackage" mode="print.test">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</p>
|
||||||
|
</xsl:if>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
transform string like a.b.c to ../../../
|
||||||
|
@param path the path to transform into a descending directory path
|
||||||
|
-->
|
||||||
|
<xsl:template name="path">
|
||||||
|
<xsl:param name="path"/>
|
||||||
|
<xsl:if test="contains($path,'.')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
<xsl:call-template name="path">
|
||||||
|
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- create the link to the stylesheet based on the package name -->
|
||||||
|
<xsl:template name="create.stylesheet.link">
|
||||||
|
<xsl:param name="package.name"/>
|
||||||
|
<link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Page HEADER -->
|
||||||
|
<xsl:template name="pageHeader">
|
||||||
|
<h1><xsl:value-of select="$TITLE"/></h1>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="left"></td>
|
||||||
|
<td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://ant.apache.org/">Ant</a>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr size="1"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- class header -->
|
||||||
|
<xsl:template name="testsuite.test.header">
|
||||||
|
<tr valign="top">
|
||||||
|
<th width="80%">Name</th>
|
||||||
|
<th>Tests</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
<th>Failures</th>
|
||||||
|
<th nowrap="nowrap">Time(s)</th>
|
||||||
|
<th nowrap="nowrap">Time Stamp</th>
|
||||||
|
<th>Host</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- method header -->
|
||||||
|
<xsl:template name="testcase.test.header">
|
||||||
|
<xsl:param name="show.class" select="''"/>
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:if test="boolean($show.class)">
|
||||||
|
<th>Class</th>
|
||||||
|
</xsl:if>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Status</th>
|
||||||
|
<th width="80%">Type</th>
|
||||||
|
<th nowrap="nowrap">Time(s)</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- class information -->
|
||||||
|
<xsl:template match="testsuite" mode="print.test">
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@errors[.> 0]">Error</xsl:when>
|
||||||
|
<xsl:when test="@failures[.> 0]">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>Pass</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:value-of select="@name"/></a></td>
|
||||||
|
<td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:apply-templates select="@tests"/></a></td>
|
||||||
|
<td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@errors != 0">
|
||||||
|
<a title="Display only errors" href="{@id}_{@name}-errors.html"><xsl:apply-templates select="@errors"/></a>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates select="@errors"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@failures != 0">
|
||||||
|
<a title="Display only failures" href="{@id}_{@name}-fails.html"><xsl:apply-templates select="@failures"/></a>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates select="@failures"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</td>
|
||||||
|
<td><xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="@time"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td><xsl:apply-templates select="@timestamp"/></td>
|
||||||
|
<td><xsl:apply-templates select="@hostname"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testcase" mode="print.test">
|
||||||
|
<xsl:param name="show.class" select="''"/>
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="error">Error</xsl:when>
|
||||||
|
<xsl:when test="failure">Failure</xsl:when>
|
||||||
|
<xsl:otherwise>TableRowColor</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:variable name="class.href">
|
||||||
|
<xsl:value-of select="concat(translate(../@package,'.','/'), '/', ../@id, '_', ../@name, '.html')"/>
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:if test="boolean($show.class)">
|
||||||
|
<td><a href="{$class.href}"><xsl:value-of select="../@name"/></a></td>
|
||||||
|
</xsl:if>
|
||||||
|
<td>
|
||||||
|
<a name="{@name}"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="boolean($show.class)">
|
||||||
|
<a href="{concat($class.href, '#', @name)}"><xsl:value-of select="@name"/></a>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="failure">
|
||||||
|
<td>Failure</td>
|
||||||
|
<td><xsl:apply-templates select="failure"/></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="error">
|
||||||
|
<td>Error</td>
|
||||||
|
<td><xsl:apply-templates select="error"/></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<td>Success</td>
|
||||||
|
<td></td>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="@time"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Note : the below template error and failure are the same style
|
||||||
|
so just call the same style store in the toolkit template -->
|
||||||
|
<xsl:template match="failure">
|
||||||
|
<xsl:call-template name="display-failures"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="error">
|
||||||
|
<xsl:call-template name="display-failures"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Style for the error and failure in the testcase template -->
|
||||||
|
<xsl:template name="display-failures">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="not(@message)">N/A</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="@message"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<!-- display the stacktrace -->
|
||||||
|
<br/><br/>
|
||||||
|
<code>
|
||||||
|
<xsl:call-template name="br-replace">
|
||||||
|
<xsl:with-param name="word" select="."/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</code>
|
||||||
|
<!-- the latter is better but might be problematic for non-21" monitors... -->
|
||||||
|
<!--pre><xsl:value-of select="."/></pre-->
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="JS-escape">
|
||||||
|
<xsl:param name="string"/>
|
||||||
|
<xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
|
||||||
|
<xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/>
|
||||||
|
<xsl:value-of select="$tmp2"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
template that will convert a carriage return into a br tag
|
||||||
|
@param word the text from which to convert CR to BR tag
|
||||||
|
-->
|
||||||
|
<xsl:template name="br-replace">
|
||||||
|
<xsl:param name="word"/>
|
||||||
|
<xsl:value-of disable-output-escaping="yes" select='stringutils:replace(string($word),"
","<br/>")'/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="display-time">
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:value-of select="format-number($value,'0.000')"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="display-percent">
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:value-of select="format-number($value,'0.00%')"/>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,467 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils">
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"
|
||||||
|
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:param name="TITLE">Unit Test Results.</xsl:param>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Sample stylesheet to be used with Ant JUnitReport output.
|
||||||
|
|
||||||
|
It creates a non-framed report that can be useful to send via
|
||||||
|
e-mail or such.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xsl:template match="testsuites">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><xsl:value-of select="$TITLE"/></title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
font:normal 68% verdana,arial,helvetica;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
table tr td, table tr th {
|
||||||
|
font-size: 68%;
|
||||||
|
}
|
||||||
|
table.details tr th{
|
||||||
|
font-weight: bold;
|
||||||
|
text-align:left;
|
||||||
|
background:#a6caf0;
|
||||||
|
}
|
||||||
|
table.details tr td{
|
||||||
|
background:#eeeee0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height:1.5em;
|
||||||
|
margin-top:0.5em; margin-bottom:1.0em;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||||
|
}
|
||||||
|
.Error {
|
||||||
|
font-weight:bold; color:red;
|
||||||
|
}
|
||||||
|
.Failure {
|
||||||
|
font-weight:bold; color:purple;
|
||||||
|
}
|
||||||
|
.Properties {
|
||||||
|
text-align:right;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" language="JavaScript">
|
||||||
|
var TestCases = new Array();
|
||||||
|
var cur;
|
||||||
|
<xsl:for-each select="./testsuite">
|
||||||
|
<xsl:apply-templates select="properties"/>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" language="JavaScript"><![CDATA[
|
||||||
|
function displayProperties (name) {
|
||||||
|
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
|
||||||
|
var doc = win.document;
|
||||||
|
doc.open();
|
||||||
|
doc.write("<html><head><title>Properties of " + name + "</title>");
|
||||||
|
doc.write("<style>")
|
||||||
|
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
|
||||||
|
doc.write("table tr td, table tr th { font-size: 68%; }");
|
||||||
|
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
|
||||||
|
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
|
||||||
|
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
|
||||||
|
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
|
||||||
|
doc.write("</style>");
|
||||||
|
doc.write("</head><body>");
|
||||||
|
doc.write("<h3>Properties of " + name + "</h3>");
|
||||||
|
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
|
||||||
|
doc.write("<table class='properties'>");
|
||||||
|
doc.write("<tr><th>Name</th><th>Value</th></tr>");
|
||||||
|
for (prop in TestCases[name]) {
|
||||||
|
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
|
||||||
|
}
|
||||||
|
doc.write("</table>");
|
||||||
|
doc.write("</body></html>");
|
||||||
|
doc.close();
|
||||||
|
win.focus();
|
||||||
|
}
|
||||||
|
]]>
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a name="top"></a>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
|
||||||
|
<!-- Summary part -->
|
||||||
|
<xsl:call-template name="summary"/>
|
||||||
|
<hr size="1" width="95%" align="left"/>
|
||||||
|
|
||||||
|
<!-- Package List part -->
|
||||||
|
<xsl:call-template name="packagelist"/>
|
||||||
|
<hr size="1" width="95%" align="left"/>
|
||||||
|
|
||||||
|
<!-- For each package create its part -->
|
||||||
|
<xsl:call-template name="packages"/>
|
||||||
|
<hr size="1" width="95%" align="left"/>
|
||||||
|
|
||||||
|
<!-- For each class create the part -->
|
||||||
|
<xsl:call-template name="classes"/>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ================================================================== -->
|
||||||
|
<!-- Write a list of all packages with an hyperlink to the anchor of -->
|
||||||
|
<!-- of the package name. -->
|
||||||
|
<!-- ================================================================== -->
|
||||||
|
<xsl:template name="packagelist">
|
||||||
|
<h2>Packages</h2>
|
||||||
|
Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
<!-- list all packages recursively -->
|
||||||
|
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||||
|
<xsl:sort select="@package"/>
|
||||||
|
<xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
|
||||||
|
<xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
|
||||||
|
<xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
|
||||||
|
<xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
|
||||||
|
<xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
|
||||||
|
|
||||||
|
<!-- write a summary for the package -->
|
||||||
|
<tr valign="top">
|
||||||
|
<!-- set a nice color depending if there is an error/failure -->
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||||
|
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
|
||||||
|
<td><xsl:value-of select="$testCount"/></td>
|
||||||
|
<td><xsl:value-of select="$errorCount"/></td>
|
||||||
|
<td><xsl:value-of select="$failureCount"/></td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="$timeCount"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td><xsl:value-of select="$testsuites-in-package/@timestamp"/></td>
|
||||||
|
<td><xsl:value-of select="$testsuites-in-package/@hostname"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ================================================================== -->
|
||||||
|
<!-- Write a package level report -->
|
||||||
|
<!-- It creates a table with values from the document: -->
|
||||||
|
<!-- Name | Tests | Errors | Failures | Time -->
|
||||||
|
<!-- ================================================================== -->
|
||||||
|
<xsl:template name="packages">
|
||||||
|
<!-- create an anchor to this package name -->
|
||||||
|
<xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||||
|
<xsl:sort select="@package"/>
|
||||||
|
<a name="{@package}"></a>
|
||||||
|
<h3>Package <xsl:value-of select="@package"/></h3>
|
||||||
|
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testsuite.test.header"/>
|
||||||
|
|
||||||
|
<!-- match the testsuites of this package -->
|
||||||
|
<xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
|
||||||
|
</table>
|
||||||
|
<a href="#top">Back to top</a>
|
||||||
|
<p/>
|
||||||
|
<p/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="classes">
|
||||||
|
<xsl:for-each select="testsuite">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
<!-- create an anchor to this class name -->
|
||||||
|
<a name="{@name}"></a>
|
||||||
|
<h3>TestCase <xsl:value-of select="@name"/></h3>
|
||||||
|
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<xsl:call-template name="testcase.test.header"/>
|
||||||
|
<!--
|
||||||
|
test can even not be started at all (failure to load the class)
|
||||||
|
so report the error directly
|
||||||
|
-->
|
||||||
|
<xsl:if test="./error">
|
||||||
|
<tr class="Error">
|
||||||
|
<td colspan="4"><xsl:apply-templates select="./error"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:apply-templates select="./testcase" mode="print.test"/>
|
||||||
|
</table>
|
||||||
|
<div class="Properties">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
|
||||||
|
Properties »
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<p/>
|
||||||
|
|
||||||
|
<a href="#top">Back to top</a>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="summary">
|
||||||
|
<h2>Summary</h2>
|
||||||
|
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
|
||||||
|
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
|
||||||
|
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
|
||||||
|
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
|
||||||
|
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
|
||||||
|
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||||
|
<tr valign="top">
|
||||||
|
<th>Tests</th>
|
||||||
|
<th>Failures</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
<th>Success rate</th>
|
||||||
|
<th>Time</th>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||||
|
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><xsl:value-of select="$testCount"/></td>
|
||||||
|
<td><xsl:value-of select="$failureCount"/></td>
|
||||||
|
<td><xsl:value-of select="$errorCount"/></td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-percent">
|
||||||
|
<xsl:with-param name="value" select="$successRate"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="$timeCount"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table border="0" width="95%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: justify;">
|
||||||
|
Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Write properties into a JavaScript data structure.
|
||||||
|
This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
|
||||||
|
-->
|
||||||
|
<xsl:template match="properties">
|
||||||
|
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
|
||||||
|
<xsl:for-each select="property">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Page HEADER -->
|
||||||
|
<xsl:template name="pageHeader">
|
||||||
|
<h1><xsl:value-of select="$TITLE"/></h1>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="left"></td>
|
||||||
|
<td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://ant.apache.org/ant'>Ant</a>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr size="1"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testsuite" mode="header">
|
||||||
|
<tr valign="top">
|
||||||
|
<th width="80%">Name</th>
|
||||||
|
<th>Tests</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
<th>Failures</th>
|
||||||
|
<th nowrap="nowrap">Time(s)</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- class header -->
|
||||||
|
<xsl:template name="testsuite.test.header">
|
||||||
|
<tr valign="top">
|
||||||
|
<th width="80%">Name</th>
|
||||||
|
<th>Tests</th>
|
||||||
|
<th>Errors</th>
|
||||||
|
<th>Failures</th>
|
||||||
|
<th nowrap="nowrap">Time(s)</th>
|
||||||
|
<th nowrap="nowrap">Time Stamp</th>
|
||||||
|
<th>Host</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- method header -->
|
||||||
|
<xsl:template name="testcase.test.header">
|
||||||
|
<tr valign="top">
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Status</th>
|
||||||
|
<th width="80%">Type</th>
|
||||||
|
<th nowrap="nowrap">Time(s)</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- class information -->
|
||||||
|
<xsl:template match="testsuite" mode="print.test">
|
||||||
|
<tr valign="top">
|
||||||
|
<!-- set a nice color depending if there is an error/failure -->
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@failures[.> 0]">Failure</xsl:when>
|
||||||
|
<xsl:when test="@errors[.> 0]">Error</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
|
||||||
|
<!-- print testsuite information -->
|
||||||
|
<td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
|
||||||
|
<td><xsl:value-of select="@tests"/></td>
|
||||||
|
<td><xsl:value-of select="@errors"/></td>
|
||||||
|
<td><xsl:value-of select="@failures"/></td>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="@time"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
<td><xsl:apply-templates select="@timestamp"/></td>
|
||||||
|
<td><xsl:apply-templates select="@hostname"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="testcase" mode="print.test">
|
||||||
|
<tr valign="top">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="failure | error">Error</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td><xsl:value-of select="@name"/></td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="failure">
|
||||||
|
<td>Failure</td>
|
||||||
|
<td><xsl:apply-templates select="failure"/></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="error">
|
||||||
|
<td>Error</td>
|
||||||
|
<td><xsl:apply-templates select="error"/></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<td>Success</td>
|
||||||
|
<td></td>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<td>
|
||||||
|
<xsl:call-template name="display-time">
|
||||||
|
<xsl:with-param name="value" select="@time"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="failure">
|
||||||
|
<xsl:call-template name="display-failures"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="error">
|
||||||
|
<xsl:call-template name="display-failures"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Style for the error and failure in the tescase template -->
|
||||||
|
<xsl:template name="display-failures">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="not(@message)">N/A</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="@message"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<!-- display the stacktrace -->
|
||||||
|
<code>
|
||||||
|
<br/><br/>
|
||||||
|
<xsl:call-template name="br-replace">
|
||||||
|
<xsl:with-param name="word" select="."/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</code>
|
||||||
|
<!-- the later is better but might be problematic for non-21" monitors... -->
|
||||||
|
<!--pre><xsl:value-of select="."/></pre-->
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="JS-escape">
|
||||||
|
<xsl:param name="string"/>
|
||||||
|
<xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
|
||||||
|
<xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/>
|
||||||
|
<xsl:value-of select="$tmp2"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
template that will convert a carriage return into a br tag
|
||||||
|
@param word the text from which to convert CR to BR tag
|
||||||
|
-->
|
||||||
|
<xsl:template name="br-replace">
|
||||||
|
<xsl:param name="word"/>
|
||||||
|
<xsl:value-of disable-output-escaping="yes" select='stringutils:replace(string($word),"
","<br/>")'/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="display-time">
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:value-of select="format-number($value,'0.000')"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="display-percent">
|
||||||
|
<xsl:param name="value"/>
|
||||||
|
<xsl:value-of select="format-number($value,'0.00%')"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,203 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
The purpose have this XSL is to provide a nice way to look at the output
|
||||||
|
from the Ant XmlLogger (ie: ant -listener org.apache.tools.ant.XmlLogger )
|
||||||
|
|
||||||
|
@author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||||
|
|
||||||
|
<xsl:template match="/">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
.bannercell {
|
||||||
|
border: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font:normal 100% arial,helvetica,sanserif;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
table.status {
|
||||||
|
font:bold 80% arial,helvetica,sanserif;
|
||||||
|
background-color:#525D76;
|
||||||
|
color:#ffffff;
|
||||||
|
}
|
||||||
|
table.log tr td, tr th {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.error {
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
.warn {
|
||||||
|
color:brown;
|
||||||
|
}
|
||||||
|
.info {
|
||||||
|
color:gray;
|
||||||
|
}
|
||||||
|
.debug{
|
||||||
|
color:gray;
|
||||||
|
}
|
||||||
|
.failed {
|
||||||
|
font-size:80%;
|
||||||
|
background-color: red;
|
||||||
|
color:#FFFFFF;
|
||||||
|
font-weight: bold
|
||||||
|
}
|
||||||
|
.complete {
|
||||||
|
font-size:80%;
|
||||||
|
background-color: #525D76;
|
||||||
|
color:#FFFFFF;
|
||||||
|
font-weight: bold
|
||||||
|
}
|
||||||
|
.a td {
|
||||||
|
background: #efefef;
|
||||||
|
}
|
||||||
|
.b td {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
th, td {
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
background: #ccc;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
table, th, td {
|
||||||
|
border: none
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font:bold 80% arial,helvetica,sanserif;
|
||||||
|
background: #525D76;
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 5px;
|
||||||
|
margin-right: 2px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- jakarta logo -->
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="bannercell">
|
||||||
|
<a href="http://jakarta.apache.org/">
|
||||||
|
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right;vertical-align:bottom">
|
||||||
|
<a href="http://ant.apache.org/">Apache Ant</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table border="0" width="100%">
|
||||||
|
<tr><td><hr noshade="yes" size="1"/></td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<xsl:apply-templates select="build"/>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="build">
|
||||||
|
<!-- build status -->
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:if test="@error">failed</xsl:if>
|
||||||
|
<xsl:if test="not(@error)">complete</xsl:if>
|
||||||
|
</xsl:attribute>
|
||||||
|
<tr>
|
||||||
|
<xsl:if test="@error">
|
||||||
|
<td nowrap="yes">Build Failed</td>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not(@error)">
|
||||||
|
<td nowrap="yes">Build Complete</td>
|
||||||
|
</xsl:if>
|
||||||
|
<td style="text-align:right" nowrap="yes">Total Time: <xsl:value-of select="@time"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<xsl:if test="@error">
|
||||||
|
<tt><xsl:value-of select="@error"/></tt><br/>
|
||||||
|
<i style="font-size:80%">See the <a href="#stacktrace" alt="Click for details">stacktrace</a>.</i>
|
||||||
|
</xsl:if>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table border="1" cellspacing="2" cellpadding="3" width="100%" style="font-size:80%">
|
||||||
|
<tr class="a"><td width="1">ant.file</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.file')], '->')"/></td></tr>
|
||||||
|
<tr class="b"><td width="1">ant.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.version')], '->')"/></td></tr>
|
||||||
|
<tr class="a"><td width="1">java.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'java.vm.version')], '->')"/></td></tr>
|
||||||
|
<tr class="b"><td width="1">os.name</td><td><xsl:value-of select="substring-after(//message[contains(text(),'os.name')], '->')"/></td></tr>
|
||||||
|
</table>
|
||||||
|
<!-- build information -->
|
||||||
|
<h3>Build events</h3>
|
||||||
|
<table class="log" border="1" cellspacing="2" cellpadding="3" width="100%">
|
||||||
|
<tr>
|
||||||
|
<th nowrap="yes" align="left" width="1%">target</th>
|
||||||
|
<th nowrap="yes" align="left" width="1%">task</th>
|
||||||
|
<th nowrap="yes" align="left">message</th>
|
||||||
|
</tr>
|
||||||
|
<xsl:apply-templates select=".//message[@priority != 'debug']"/>
|
||||||
|
</table>
|
||||||
|
<p>
|
||||||
|
<!-- stacktrace -->
|
||||||
|
<xsl:if test="stacktrace">
|
||||||
|
<a name="stacktrace"/>
|
||||||
|
<h3>Error details</h3>
|
||||||
|
<table width="100%">
|
||||||
|
<tr><td>
|
||||||
|
<pre><xsl:value-of select="stacktrace"/></pre>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
</xsl:if>
|
||||||
|
</p>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- report every message but those with debug priority -->
|
||||||
|
<xsl:template match="message[@priority!='debug']">
|
||||||
|
<tr valign="top">
|
||||||
|
<!-- alternated row style -->
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:if test="position() mod 2 = 1">a</xsl:if>
|
||||||
|
<xsl:if test="position() mod 2 = 0">b</xsl:if>
|
||||||
|
</xsl:attribute>
|
||||||
|
<td nowrap="yes" width="1%"><xsl:value-of select="../../@name"/></td>
|
||||||
|
<td nowrap="yes" style="text-align:right" width="1%">[ <xsl:value-of select="../@name"/> ]</td>
|
||||||
|
<td class="{@priority}" nowrap="yes">
|
||||||
|
<xsl:value-of select="text()"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,503 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||||
|
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||||
|
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||||
|
extension-element-prefixes="redirect">
|
||||||
|
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||||
|
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Stylesheet to transform an XML file generated by the Ant MAudit task into
|
||||||
|
a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
|
||||||
|
|
||||||
|
It use the Xalan redirect extension to write to multiple output files.
|
||||||
|
|
||||||
|
@author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:param name="output.dir" select="'.'"/>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="classes">
|
||||||
|
<!-- create the index.html -->
|
||||||
|
<redirect:write file="{$output.dir}/index.html">
|
||||||
|
<xsl:call-template name="index.html"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the stylesheet.css -->
|
||||||
|
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||||
|
<xsl:call-template name="stylesheet.css"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the overview-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||||
|
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-packages.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.packages"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create the all-classes.html at the root -->
|
||||||
|
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||||
|
<xsl:apply-templates select="." mode="all.classes"/>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- process all packages -->
|
||||||
|
<xsl:for-each select="./class[not(./@package = preceding-sibling::class/@package)]">
|
||||||
|
<xsl:call-template name="package">
|
||||||
|
<xsl:with-param name="name" select="@package"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="package">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<xsl:variable name="package.dir">
|
||||||
|
<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
|
||||||
|
<xsl:if test="$name = ''">.</xsl:if>
|
||||||
|
</xsl:variable>
|
||||||
|
<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
|
||||||
|
<!-- create a classes-list.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||||
|
<xsl:call-template name="classes.list">
|
||||||
|
<xsl:with-param name="name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- create a package-summary.html in the package directory -->
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||||
|
<xsl:call-template name="package.summary">
|
||||||
|
<xsl:with-param name="name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</redirect:write>
|
||||||
|
|
||||||
|
<!-- for each class, creates a @name.html -->
|
||||||
|
<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
|
||||||
|
<xsl:for-each select="/classes/class[@package = $name]">
|
||||||
|
<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
|
||||||
|
<xsl:apply-templates select="." mode="class.details"/>
|
||||||
|
</redirect:write>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="index.html">
|
||||||
|
<HTML>
|
||||||
|
<HEAD><TITLE>Audit Results.</TITLE></HEAD>
|
||||||
|
<FRAMESET cols="20%,80%">
|
||||||
|
<FRAMESET rows="30%,70%">
|
||||||
|
<FRAME src="overview-frame.html" name="packageListFrame"/>
|
||||||
|
<FRAME src="allclasses-frame.html" name="classListFrame"/>
|
||||||
|
</FRAMESET>
|
||||||
|
<FRAME src="overview-summary.html" name="classFrame"/>
|
||||||
|
</FRAMESET>
|
||||||
|
<noframes>
|
||||||
|
<H2>Frame Alert</H2>
|
||||||
|
<P>
|
||||||
|
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||||
|
</P>
|
||||||
|
</noframes>
|
||||||
|
</HTML>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- this is the stylesheet css to use for nearly everything -->
|
||||||
|
<xsl:template name="stylesheet.css">
|
||||||
|
.bannercell {
|
||||||
|
border: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin-left: 10;
|
||||||
|
margin-right: 10;
|
||||||
|
font:normal 80% arial,helvetica,sanserif;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
.a td {
|
||||||
|
background: #efefef;
|
||||||
|
}
|
||||||
|
.b td {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
th, td {
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
font-weight:bold;
|
||||||
|
background: #ccc;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
table, th, td {
|
||||||
|
font-size:100%;
|
||||||
|
border: none
|
||||||
|
}
|
||||||
|
table.log tr td, tr th {
|
||||||
|
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:140%;
|
||||||
|
margin-bottom: 5;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size:100%;
|
||||||
|
font-weight:bold;
|
||||||
|
background: #525D76;
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 5px;
|
||||||
|
margin-right: 2px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- print the violations of the class -->
|
||||||
|
<xsl:template match="class" mode="class.details">
|
||||||
|
<xsl:variable name="package.name" select="@package"/>
|
||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</HEAD>
|
||||||
|
<BODY>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
|
||||||
|
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:call-template name="class.audit.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="print.audit"/>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<H3>Violations</H3>
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:call-template name="violation.audit.header"/>
|
||||||
|
<xsl:apply-templates select="./violation" mode="print.audit">
|
||||||
|
<xsl:sort data-type="number" select="@line"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
<xsl:call-template name="pageFooter"/>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- list of classes in a package -->
|
||||||
|
<xsl:template name="classes.list">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</HEAD>
|
||||||
|
<BODY>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="$name"/></a></H2>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<TABLE WIDTH="100%">
|
||||||
|
<xsl:apply-templates select="/classes/class[./@package = $name]" mode="classes.list">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</TABLE>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
||||||
|
</xsl:template>
|
||||||
|
<!-- the class to list -->
|
||||||
|
<xsl:template match="class" mode="classes.list">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<!-- @bug naming to fix for inner classes -->
|
||||||
|
<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an all-classes.html file that contains a link to all package-summary.html
|
||||||
|
on each class.
|
||||||
|
-->
|
||||||
|
<xsl:template match="classes" mode="all.classes">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select=".//class" mode="all.classes">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="class" mode="all.classes">
|
||||||
|
<!-- (ancestor::package)[last()] is buggy in MSXML3 ? -->
|
||||||
|
<xsl:variable name="package.name" select="@package"/>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a target="classFrame">
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:if test="not($package.name='')">
|
||||||
|
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||||
|
</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Creates an html file that contains a link to all package-summary.html files on
|
||||||
|
each package existing on testsuites.
|
||||||
|
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||||
|
-->
|
||||||
|
<xsl:template match="classes" mode="all.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||||
|
<h2>Packages</h2>
|
||||||
|
<table width="100%">
|
||||||
|
<xsl:apply-templates select="class[not(./@package = preceding-sibling::class/@package)]" mode="all.packages">
|
||||||
|
<xsl:sort select="@package" order="ascending"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="class" mode="all.packages">
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">
|
||||||
|
<a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame">
|
||||||
|
<xsl:value-of select="@package"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="classes" mode="overview.packages">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</head>
|
||||||
|
<body onload="open('allclasses-frame.html','classListFrame')">
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Summary</h3>
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<tr>
|
||||||
|
<th>Audited classes</th>
|
||||||
|
<th>Reported classes</th>
|
||||||
|
<th>Violations</th>
|
||||||
|
</tr>
|
||||||
|
<tr class="a">
|
||||||
|
<td><xsl:value-of select="@audited"/></td>
|
||||||
|
<td><xsl:value-of select="@reported"/></td>
|
||||||
|
<td><xsl:value-of select="@violations"/></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table border="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: justify;">
|
||||||
|
Note: Rules checked have originated from style guidelines suggested by the language designers,
|
||||||
|
experience from the Java development community and insite experience. Violations are generally
|
||||||
|
reported with a reference to the <a href="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html">Java Language Specifications</a> (JLS x.x.x)
|
||||||
|
and Metamata Audit rules (x.x).
|
||||||
|
Please consult these documents for additional information about violations.
|
||||||
|
<p/>
|
||||||
|
Rules checked also enforce adherence to <a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun Java coding guidelines</a> in use at Jakarta.
|
||||||
|
<p/>
|
||||||
|
One should note that these violations do not necessary underline errors but should be used
|
||||||
|
as an indication for <i>possible</i> errors. As always, use your best judgment and review
|
||||||
|
them carefully, it might save you hours of debugging.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h3>Packages</h3>
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:call-template name="class.audit.header"/>
|
||||||
|
<xsl:for-each select="class[not(./@package = preceding-sibling::class/@package)]">
|
||||||
|
<xsl:sort select="@package" order="ascending"/>
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternate-row"/>
|
||||||
|
<td><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
|
||||||
|
<td><xsl:value-of select="sum(/classes/class[./@package = current()/@package]/@violations)"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
<xsl:call-template name="pageFooter"/>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="package.summary">
|
||||||
|
<xsl:param name="name"/>
|
||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<xsl:call-template name="create.stylesheet.link">
|
||||||
|
<xsl:with-param name="package.name" select="$name"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</HEAD>
|
||||||
|
<BODY>
|
||||||
|
<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
|
||||||
|
<xsl:call-template name="pageHeader"/>
|
||||||
|
<h3>Package <xsl:value-of select="$name"/></h3>
|
||||||
|
|
||||||
|
<!--table border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:call-template name="class.metrics.header"/>
|
||||||
|
<xsl:apply-templates select="." mode="print.metrics"/>
|
||||||
|
</table-->
|
||||||
|
|
||||||
|
<xsl:if test="count(/classes/class[./@package = $name]) > 0">
|
||||||
|
<H3>Classes</H3>
|
||||||
|
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||||
|
<xsl:call-template name="class.audit.header"/>
|
||||||
|
<xsl:apply-templates select="/classes/class[./@package = $name]" mode="print.audit">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</table>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:call-template name="pageFooter"/>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
transform string like a.b.c to ../../../
|
||||||
|
@param path the path to transform into a descending directory path
|
||||||
|
-->
|
||||||
|
<xsl:template name="path">
|
||||||
|
<xsl:param name="path"/>
|
||||||
|
<xsl:if test="contains($path,'.')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
<xsl:call-template name="path">
|
||||||
|
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||||
|
<xsl:text>../</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- create the link to the stylesheet based on the package name -->
|
||||||
|
<xsl:template name="create.stylesheet.link">
|
||||||
|
<xsl:param name="package.name"/>
|
||||||
|
<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Page HEADER -->
|
||||||
|
<xsl:template name="pageHeader">
|
||||||
|
|
||||||
|
<!-- jakarta logo -->
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td class="bannercell" rowspan="2">
|
||||||
|
<a href="http://jakarta.apache.org/">
|
||||||
|
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:right"><h2>Source Code Audit</h2></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Audit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<hr size="1"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Page HEADER -->
|
||||||
|
<xsl:template name="pageFooter">
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- class header -->
|
||||||
|
<xsl:template name="class.audit.header">
|
||||||
|
<tr>
|
||||||
|
<th width="80%">Name</th>
|
||||||
|
<th>Violations</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- method header -->
|
||||||
|
<xsl:template name="violation.audit.header">
|
||||||
|
<tr>
|
||||||
|
<th>Line</th>
|
||||||
|
<th>Message</th>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- class information -->
|
||||||
|
<xsl:template match="class" mode="print.audit">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternate-row"/>
|
||||||
|
<td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
|
||||||
|
<td><xsl:apply-templates select="@violations"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="violation" mode="print.audit">
|
||||||
|
<tr>
|
||||||
|
<xsl:call-template name="alternate-row"/>
|
||||||
|
<td><xsl:value-of select="@line"/></td>
|
||||||
|
<td><xsl:apply-templates select="@message"/></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- alternated row style -->
|
||||||
|
<xsl:template name="alternate-row">
|
||||||
|
<xsl:attribute name="class">
|
||||||
|
<xsl:if test="position() mod 2 = 1">a</xsl:if>
|
||||||
|
<xsl:if test="position() mod 2 = 0">b</xsl:if>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,179 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
(the "License"); you may not use this file except in compliance with
|
||||||
|
the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
<!-- a stylesheet to display changelogs ala netbeans -->
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
version="1.0">
|
||||||
|
<xsl:param name="title"/>
|
||||||
|
<xsl:param name="module"/>
|
||||||
|
<xsl:param name="cvsweb"/>
|
||||||
|
|
||||||
|
<xsl:output method="html" indent="yes"/>
|
||||||
|
|
||||||
|
<!-- Copy standard document elements. Elements that
|
||||||
|
should be ignored must be filtered by apply-templates
|
||||||
|
tags. -->
|
||||||
|
<xsl:template match="*">
|
||||||
|
<xsl:copy>
|
||||||
|
<xsl:copy-of select="attribute::*[. != '']"/>
|
||||||
|
<xsl:apply-templates/>
|
||||||
|
</xsl:copy>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="tagdiff">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title><xsl:value-of select="$title"/></title>
|
||||||
|
<style type="text/css">
|
||||||
|
body, p {
|
||||||
|
font-family: verdana,arial,helvetica;
|
||||||
|
font-size: 80%;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
.dateAndAuthor {
|
||||||
|
font-family: verdana,arial,helvetica;
|
||||||
|
font-size: 80%;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align:left;
|
||||||
|
background:#a6caf0;
|
||||||
|
}
|
||||||
|
tr, td{
|
||||||
|
font-family: verdana,arial,helvetica;
|
||||||
|
font-size: 80%;
|
||||||
|
background:#eeeee0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body link="#000000" alink="#000000" vlink="#000000" text="#000000">
|
||||||
|
<h1>
|
||||||
|
<a name="top"><xsl:value-of select="$title"/></a>
|
||||||
|
</h1>
|
||||||
|
Tagdiff between <xsl:value-of select="@startTag"/> <xsl:value-of select="@startDate"/> and
|
||||||
|
<xsl:value-of select="@endTag"/> <xsl:value-of select="@endDate"/>
|
||||||
|
<p align="right">Designed for use with <a href="http://ant.apache.org/">Ant</a>.</p>
|
||||||
|
<hr size="2"/>
|
||||||
|
<a name="TOP"/>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td align="right">
|
||||||
|
<a href="#New">New Files</a> |
|
||||||
|
<a href="#Modified">Modified Files</a> |
|
||||||
|
<a href="#Removed">Removed Files</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<table border="0" width="100%" cellpadding="3" cellspacing="1">
|
||||||
|
<xsl:call-template name="show-entries">
|
||||||
|
<xsl:with-param name="title">New Files</xsl:with-param>
|
||||||
|
<xsl:with-param name="anchor">New</xsl:with-param>
|
||||||
|
<xsl:with-param name="entries" select=".//entry[file/revision][not(file/prevrevision)]"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<xsl:call-template name="show-entries">
|
||||||
|
<xsl:with-param name="title">Modified Files</xsl:with-param>
|
||||||
|
<xsl:with-param name="anchor">Modified</xsl:with-param>
|
||||||
|
<xsl:with-param name="entries" select=".//entry[file/revision][file/prevrevision]"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
|
||||||
|
<!-- change to entries select to address bug #36827 -->
|
||||||
|
<xsl:call-template name="show-entries">
|
||||||
|
<xsl:with-param name="title">Removed Files</xsl:with-param>
|
||||||
|
<xsl:with-param name="anchor">Removed</xsl:with-param>
|
||||||
|
<xsl:with-param name="entries" select=".//entry[not(file/revision)][file/prevrevision]"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="show-entries">
|
||||||
|
<xsl:param name="title"/>
|
||||||
|
<xsl:param name="anchor"/>
|
||||||
|
<xsl:param name="entries"/>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="dateAndAuthor">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="name"><xsl:value-of select="$anchor"/></xsl:attribute>
|
||||||
|
<xsl:value-of select="$title"/> - <xsl:value-of select="count($entries)"/> entries
|
||||||
|
</a>
|
||||||
|
<a href="#TOP">(back to top)</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="20">
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<xsl:apply-templates select="$entries"/>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="entry">
|
||||||
|
<xsl:apply-templates select="file"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="date">
|
||||||
|
<i><xsl:value-of select="."/></i>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="time">
|
||||||
|
<i><xsl:value-of select="."/></i>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="author">
|
||||||
|
<i>
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
|
||||||
|
<xsl:value-of select="."/>
|
||||||
|
</a>
|
||||||
|
</i>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="file">
|
||||||
|
<li>
|
||||||
|
<a target="_new">
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" /></xsl:attribute>
|
||||||
|
<xsl:value-of select="name" />
|
||||||
|
</a>
|
||||||
|
<xsl:if test="string-length(prevrevision) > 0 or string-length(revision) > 0">
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
|
<a target="_new">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="string-length(prevrevision) = 0 ">
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&content-type=text/x-cvsweb-markup</xsl:attribute>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&r2=<xsl:value-of select="prevrevision"/>&diff_format=h</xsl:attribute>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose> (<xsl:if test="count(prevrevision) > 0"> <xsl:value-of select="prevrevision"/> --> </xsl:if> <xsl:value-of select="revision"/>)
|
||||||
|
</a>
|
||||||
|
</xsl:if>
|
||||||
|
</li>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Any elements within a msg are processed,
|
||||||
|
so that we can preserve HTML tags. -->
|
||||||
|
<xsl:template match="msg">
|
||||||
|
<b><xsl:apply-templates/></b>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,12 @@
|
||||||
|
###############################################################################
|
||||||
|
# Copyright (c) 2000, 2010 IBM Corporation and others.
|
||||||
|
# All rights reserved. This program and the accompanying materials
|
||||||
|
# are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
# which accompanies this distribution, and is available at
|
||||||
|
# http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
#
|
||||||
|
# Contributors:
|
||||||
|
# IBM Corporation - initial API and implementation
|
||||||
|
###############################################################################
|
||||||
|
pluginName = Apache Ant
|
||||||
|
providerName = Eclipse Orbit
|
Loading…
Reference in New Issue