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