diff options
41 files changed, 8119 insertions, 0 deletions
diff --git a/build/.checkstyle b/build/.checkstyle new file mode 100644 index 000000000..c868508c2 --- /dev/null +++ b/build/.checkstyle @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fileset-config file-format-version="1.0.0"/> diff --git a/build/.project b/build/.project new file mode 100644 index 000000000..6f56803c2 --- /dev/null +++ b/build/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>MOA Build</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature> + </natures> +</projectDescription> diff --git a/build/README.txt b/build/README.txt new file mode 100644 index 000000000..4c8a1cf27 --- /dev/null +++ b/build/README.txt @@ -0,0 +1,80 @@ +MOA BUILD-SYSTEM +================ + + +Einleitung +---------- + +Das MOA Build-System bietet eine einheitliche Build-Umgebung für +alle MOA Sub-Projekte. + +Es bietet folgende Vorteile: + - zentrale Installation des Build-Tools (Ant) + - zentrale Ablage der Build-Scripts + - standardisiertes Build über alle Sub-Projekte + - einfache Möglichkeit, alle Sub-Projekte auf einmal zu erzeugen + + +Voraussetzungen +--------------- + +Das MOA Build-System setzt ein JDK 1.3.1 oder höher voraus. Folgende +Umgebungsvariablen müssen (required) oder können (optional) gesetzt +sein: + + - JAVA_HOME (required): zeigt auf das vom Build-System zu verwendende + JDK (ab Version 1.3.1) + - CATALINA_HOME (optional): zeigt auf eine Tomcat-4.1 Installation; wird + verwendet, um Web-Applikationen zu deployen + - JMETER_HOME (optional): zeigt auf eine JMeter-1.8 Installation; wird + verewndet, um das JMeter-Plugin zu deployen + + +Aufruf +------ + +Unter Windows: + build [project [targets]] + +Unter Unix: + build.sh [project [targets]] + +Der Parameter 'project' spezifiziert das Sub-Projekt, für das das Build +aufzurufen ist. Der Wert 'all' gibt an, dass das Build für alle MOA Sub-Projekte +durchgeführt werden soll. + +Der Parameter 'targets' spezifiziert eine Liste von Build-Targets. Werden keine +Targets angegeben, wird automatisch der Default-Target des jeweiligen Projekts +ausgeführt. + +Ein Aufruf ohne Parameter wird wie ein Aufruf mit dem Parameter 'all' interpretiert. + + +Sub-Projekte +------------ + +Als Sub-Projekte stehen derzeit zur Verfügung: + + - common + - spss.client + - spss.server + - id.server + +Das MOA Build-System geht davon aus, dass die Sub-Projekte in der selben +Verzeichnis-Ebene zu finden sind wie das Build-System selbst. + + +Targets +------- + +Sub-Projekte stellen ihre Targets in einem Build-File namens 'build.xml' in +ihrem Wurzelverzeichnis zur Verfügung. Jedes Sub-Projekt hat grundsätzlich +die Freiheit, eigene Targets zu definieren. Für ein möglichst automatisiertes +Build und Deployment aller Sub-Projekte auf einmal, sollten einige Top-Level +Targets über alle Sub-Projekte hinweg standardisiert sein: + +dist-all: erzeugt deploy-fähige bzw. verteilbare Module + +deploy-catalina: führt das Deployment in einen Tomcat-4.1 durch + +deploy-all: führt das Deployment in Zielumgebungen durch diff --git a/build/scripts/build.bat b/build/scripts/build.bat new file mode 100644 index 000000000..317699068 --- /dev/null +++ b/build/scripts/build.bat @@ -0,0 +1,64 @@ +@echo off
+
+rem
+rem Main build script for the MOA projects
+rem
+rem Author: Patrick Peck
+rem Version: $Id: build.bat,v 1.8 2003/05/07 18:52:02 peck Exp $
+rem
+
+
+set JAVA_HOME=C:\Programme\JavaSoft\JDK\jdk1.3.1_08
+set CATALINA_HOME=C:\Programme\Apache\Tomcat-4_1_24
+
+
+if %OS%=="Windows_NT" @setlocal
+
+set PROJECTS=
+set TARGETS=
+
+set ALLPROJECTS=common spss.server id.server
+
+if "%JAVA_HOME%"=="" goto noJavaHome
+goto checkAllProjects
+
+:noJavaHome
+echo error: JAVA_HOME not defined
+goto end
+
+:checkAllProjects
+set PROJECTS=%1
+shift
+if not "%PROJECTS%"=="all" goto checkCommonProject
+set PROJECTS=%ALLPROJECTS%
+goto checkTargets
+
+:checkCommonProject
+if not "%PROJECTS%"=="common" goto checkProject
+set PROJECTS=common
+goto checkTargets
+
+:checkEmptyProject
+if not "%PROJECTS%"=="" goto checkProject
+set PROJECTS=%ALLPROJECTS%
+goto checkTargets
+
+:checkProject
+set PROJECTS=common %PROJECTS%
+
+:checkTargets
+if "%1"=="" goto runAnt
+set TARGETS=%TARGETS% %1
+shift
+goto checkTargets
+
+:runAnt
+echo.
+echo BUILDING PROJECT(S): %PROJECTS%
+echo BUILDING TARGET(S) : %TARGETS%
+
+for %%p in (%PROJECTS%) do call runAnt %%p %TARGETS%
+
+:end
+if %OS%=="Windows_NT" @endlocal
+
diff --git a/build/scripts/build.sh b/build/scripts/build.sh new file mode 100644 index 000000000..33f5f78b3 --- /dev/null +++ b/build/scripts/build.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# +# Main build script for the MOA projects +# +# Author: Paul Ivancsics +# Version: $Id: build.sh,v 1.13 2003/05/07 18:52:02 peck Exp $ +# + + +PROJECTS=$1 +ALLPROJECTS="common spss.server id.server" + +shift +TARGETS=$* + +if [ -z "$JAVA_HOME" ]; then + echo "error: JAVA_HOME not defined"; + exit; +fi + +if [ -z "$PROJECTS" ] || [ "$PROJECTS" = "all" ]; then + PROJECTS=$ALLPROJECTS; +elif ! [ "$PROJECTS" = "common" ]; then + PROJECTS="common $PROJECTS"; +fi + +echo +echo "BUILDING PROJECT(S): $PROJECTS" +echo "BUILDING TARGET(S) : $TARGETS" + +for PROJ in $PROJECTS; do + sh ./runAnt.sh $PROJ $TARGETS; +done diff --git a/build/scripts/runAnt.bat b/build/scripts/runAnt.bat new file mode 100644 index 000000000..347ad8d21 --- /dev/null +++ b/build/scripts/runAnt.bat @@ -0,0 +1,38 @@ +@echo off
+
+rem
+rem Helper script for calling Ant
+rem
+rem Author: Patrick Peck
+rem Version: $Id: runAnt.bat,v 1.6 2003/03/24 10:36:35 peck Exp $
+rem
+
+
+if %OS%=="Windows_NT" @setlocal
+
+set ANT=..\build\tools\jakarta-ant-1.5.1\bin\ant.bat
+set BUILDFILE=build.xml
+set SCRIPT_SUFFIX=bat
+set MOA_COMMON_JAR=..\common\tmp\dist\moa-common.jar
+set MOA_COMMON_TEST_JAR=..\common\tmp\dist\moa-common-test.jar
+
+echo.
+echo.
+echo BUILDING %1
+echo.
+
+
+cd ..\..\%1
+
+:callCommon
+if not "%1"=="common" goto callOther
+call %ANT% -f %BUILDFILE% dist-all
+goto end
+
+:callOther
+call %ANT% -f %BUILDFILE% %2 %3 %4 %5 %6 %7 %8 %9
+
+:end
+cd ..\build\scripts
+if %OS%=="Windows_NT" @endlocal
+
diff --git a/build/scripts/runAnt.sh b/build/scripts/runAnt.sh new file mode 100644 index 000000000..b5fc92e24 --- /dev/null +++ b/build/scripts/runAnt.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +# +# Helper script for calling Ant +# +# Author: Paul Ivancsics +# Version: $Id: runAnt.sh,v 1.9 2003/04/07 13:36:43 peck Exp $ +# + + +ANT=../build/tools/jakarta-ant-1.5.1/bin/ant +PROJECT="$1" +BUILDFILE=build.xml +export SCRIPT_SUFFIX=sh +export MOA_COMMON_JAR=../common/tmp/dist/moa-common.jar +export MOA_COMMON_TEST_JAR=../common/tmp/dist/moa-common-test.jar + +echo +echo +echo BUILDING $PROJECT +echo + + +cd ../../$PROJECT + +if [ "$1" == "common" ]; then + sh $ANT -f $BUILDFILE dist-all +else + sh $ANT -f $BUILDFILE $2 $3 $4 $5 $6 $7 $8 $9 +fi + diff --git a/build/tools/jakarta-ant-1.5.1/KEYS b/build/tools/jakarta-ant-1.5.1/KEYS new file mode 100644 index 000000000..61bff0aec --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/KEYS @@ -0,0 +1,226 @@ +This file contains the PGP keys of various developers.
+Please don't use them for email unless you have to. Their main
+purpose is code signing.
+
+Users: pgp < KEYS
+Developers:
+ pgp -kxa <your name> and append it to this file.
+ (pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
+ (gpg --list-sigs <your name>
+ && gpg --armor --export <your name>) >> this file.
+
+Type Bits/KeyID Date User ID
+pub 1024/FEECAAED 1998/11/11 Stefan Bodewig <bodewig@bost.de>
+ Stefan Bodewig <bodewig@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.3i
+
+mQCNAzZJoiMAAAEEAMzhUxTOC20Nprp6K4nLTiARt+EXii/dovNWWcfzZcYXi/lX
+r3zpUTTZxlKQpd4RaHjFmGgoOraZE4jCRFARVcFJgYmGUKpcWJZO7YKL36WUizTM
++dyB2ycOtzlty1W5VmRL3FGqo67pKA9F/QHg3NSu9hY1W9xPPK7Kq3f+7KrtAAUR
+tCBTdGVmYW4gQm9kZXdpZyA8Ym9kZXdpZ0Bib3N0LmRlPokAlQIFEDZSrGXHcgyK
+jiW9zQEBshEEAMlG4qVjKp4/agdJG56M6izx9oaKecFLXHQJrFUy3w2PvZHFYtXc
+osXKorX6bPrE8uB57MxbY2WapKeVRodlG0+j39vAf501duK8q2rktfWt9Cl4JjJ4
+DbWhSWfV1ci62u2gCxwYQe22F9Wh+vhOR5NK9RTbSKhupdlFsnrk/i7xiQCVAwUQ
+NkmiI67Kq3f+7KrtAQGdxQQAlcFOzSv7G6M4uGbgvw7IGgrhx7rawtIyv9hLXgVC
+7ua9xaZV8G0Fl9gh8RnbdcZ4R/aT+KIiAFaslfZ3t6hlC4MTbnAJqvdS/NO98ZkJ
+YvnzZSKHflAbd5gyE7IVxBC9/xRlF/Wls5sYNwb6RjoRCaOjxN/y3WCLa3Va101v
+zNy0I1N0ZWZhbiBCb2Rld2lnIDxib2Rld2lnQGFwYWNoZS5vcmc+iQCVAwUQOxIo
+BK7Kq3f+7KrtAQGn6gP/SBACdHakA4H//otpyESSrk4PmyOaYF0Kyok43Gee2mT+
+m9+jZ3jLcC0oav6iH+otL/lhk9t/JDM8LjD2kAkdWWoIvvuPyCx97gOzojIo0Ve2
+1wuxJTF/VIjwyOtE8FzE7p4tkc6EubVpeZkV9Pq9HFRBCUcyKJDLnF4tbstScLU=
+=OBLe
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+
+pub 1024D/51898504 2001-05-29 Conor MacNeill <conor@cortexebusiness.com.au>
+uid Conor MacNeill <conor@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.6 (MingW32)
+Comment: For info see http://www.gnupg.org
+
+mQGiBDsTqygRBACiZckNdclTlQFonLaIKBFGhMy0KKByw0x8XA4iwdbCXuF6xNIc
+HIFHajJ74AHchQ4d8xtomBy6b8yvFgWVeaZensvn69BlLeqGdyeJRzfPt6TgRnzZ
+2eWhb0HXdG3JwxL/2BabDhHfs4YJOrgB/vhRFQku6oCMRiBPtJj2werD6wCg0/zp
+jacYTw6+CR+sVvneCNyySFED/R3j10c4RnR8djgv1jKT8CKPuHYraupI9INEe+I6
+7qWjtJ02GzvMO6TElAtUsf4aysu45GgwkwEBnuG6mYb3Pq0V2c5tJc2A3Tj3DrdR
+i3HUNwurbus76I0sPyyENPu12QPeC6mvWLEsxVJ9o0hRKFayGvYUmrwWK9UFLjvp
+p9cXBACDHgLn7MAVLqUdYhRrUj/M+GOUpvBikEgoJJrEUmb5X4+++dffMh5HBIO4
+5LA11qEKuM2xnKqOilP7NLYXz1Fe0ocqv0jsHB4SprFTTai7ma31uwuRQvCQXVv1
+yJ5CLqYda64h/UA2kmmR2dfopmvDogYEMz/HU5voozxe7BEI7bQhQ29ub3IgTWFj
+TmVpbGwgPGNvbm9yQGFwYWNoZS5vcmc+iFcEExECABcFAjsTqygFCwcKAwQDFQMC
+AxYCAQIXgAAKCRCBBGRPUYmFBDgIAKCZztXqKhK6kXOnoGy7opCNmWU0lwCgsPDa
+4m+ruW3ch0rfbqtR75S52R+0LUNvbm9yIE1hY05laWxsIDxjb25vckBjb3J0ZXhl
+YnVzaW5lc3MuY29tLmF1PohXBBMRAgAXBQI7E6xMBQsHCgMEAxUDAgMWAgECF4AA
+CgkQgQRkT1GJhQTY0ACgmZmKheHzjPJs5hybpyvnvEiPYqYAn2+ryxdtz8XyOMEx
+GRmHNlhG7svsuQENBDsTqy0QBACfsCxJ6iCtgX8zjlVtMsMfDqu72x5sYatWKn8c
+u+4Oj5mi0x6azZIhwCa+K3ihLVOyG1mCRnzztGTIxWYRhq3TESIVOfgm+NgLGrmA
+XUTFyCT+21TExLCpuVZKmUHsWXLxDtfQ1diPeQpiQ8+Fvb/4jLGFjFIrQ2VjtFQn
+kumkSwADBgP9H0bF4hdMuVEcSJ9imxSoJshcOOA3Vd2+YiCTZhBygWM49wY5jNos
+/DArIjNCE53IlOu/UtHB2jqkSqjF0soGYsUjeCWouiTP9hLuMKPjnqj9ryJPTDKz
+nTCZ4TuB5CtzrKTlWLmPCPpFsGqe4KjMeKg/mqGqjPKl97xgStK9N9GIRgQYEQIA
+BgUCOxOrLQAKCRCBBGRPUYmFBMM6AJsF3FFyZGEmbt9aGG1W/u0oI9mcLgCfQyJ+
+aalbspazea4J9zgi59SSwOM=
+=Icm2
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub 1024D/5F6B8B72 2001-05-28 Stefan Bodewig <stefan.bodewig@epost.de>
+sig 5F6B8B72 2002-01-11 Stefan Bodewig <stefan.bodewig@epost.de>
+uid Stefan Bodewig <bodewig@apache.org>
+sig 5F6B8B72 2001-05-28 Stefan Bodewig <stefan.bodewig@epost.de>
+sig 51898504 2002-01-11 Conor MacNeill <conor@cortexebusiness.com.au>
+uid Stefan Bodewig <bodewig@bost.de>
+sig 5F6B8B72 2001-05-28 Stefan Bodewig <stefan.bodewig@epost.de>
+sig 51898504 2002-01-11 Conor MacNeill <conor@cortexebusiness.com.au>
+sub 1024g/24774157 2001-05-28
+sig 5F6B8B72 2001-05-28 Stefan Bodewig <stefan.bodewig@epost.de>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.6 (GNU/Linux)
+Comment: Weitere Infos: siehe http://www.gnupg.org
+
+mQGiBDsSIk4RBADSCj6rUjV64tYCGT1DYKYR7GthyWpNdGHSYLbETBcDatAe1dzQ
+5NsCgfrlybfyeY+y1lxr3T9bqf6zJWDw/718wff96qmmv1qzexSYtmIrj+h53V82
+EXwWOFuYMJisuxdT940iQzosm3GOv4MJdEg3oI2SgfEyRQQ6vO4Ob5rHDwCg5taZ
+nrHOrXx2dIGHxpxRZ0SUl30D/jmtttFjYOQ3LBMriikz5mh2sK3ZnoSRF4o5O0zW
+Ve6e2SFXOEjVjImKsH6KCbdQNelrAdgiyOoXClyQKsQ27pncbdWo6bO0E3POJZVm
+XaeW7iudHVr63rU5PViXObIQrdQl0D59j5brKj4vdlTyUw8kaHPvbKPDEOwvZq4Y
+LJQ5BACA1YilTeXRJqwFsNlpcxCHwlULD4QUVP496prQWf1B7Z6g0KvLGrQsO0Vn
+Jcn+fEqukysTJixSXCPebosltd4RalJIupVYkp4w6MJ7biaDAlLuNhDcI/AiXTmV
+dXUedVXIaM8I3Ne23gucwbAyc0Hvb+3cSAKRhl/azFQhuHBvlrQjU3RlZmFuIEJv
+ZGV3aWcgPGJvZGV3aWdAYXBhY2hlLm9yZz6IVwQTEQIAFwUCOxIiTgULBwoDBAMV
+AwIDFgIBAheAAAoJEKIRWuFfa4tyLJ4An2yKSQ1o+lIF2O6wR/E6NdgYAfkSAJ94
+8O9lic6ZQLUoVU5rjJURUvhVDYhGBBARAgAGBQI8PtWPAAoJEIEEZE9RiYUEnZIA
+njOkQx1BfxN9+E7Yiz4MOxqZjSUpAKDQi0Alv/VR61fmR7KHZ11J2g+HSLQgU3Rl
+ZmFuIEJvZGV3aWcgPGJvZGV3aWdAYm9zdC5kZT6IVwQTEQIAFwUCOxI5gQULBwoD
+BAMVAwIDFgIBAheAAAoJEKIRWuFfa4tyyboAoNoD/9Jgm/alxfAYELz05LMa/HLe
+AKDWTHqq7rMkppZoTUv2gWpVzrk5RIhGBBARAgAGBQI8PtWVAAoJEIEEZE9RiYUE
+0LMAn22/u01Lo3Bo5lDxxHSkayUkYq25AKCm20yaGFGtTDJW4Rdz50pfut1AwrQo
+U3RlZmFuIEJvZGV3aWcgPHN0ZWZhbi5ib2Rld2lnQGVwb3N0LmRlPohXBBMRAgAX
+BQI8Pto2BQsHCgMEAxUDAgMWAgECF4AACgkQohFa4V9ri3Kz/gCg0PlCER3JUjKk
+G8JQe/lIJoApx38AoMW2G1lOuMX54RiWS08tG0j3ON4TuQENBDsSIlQQBADNUpZL
+xCuTKzJ1tMm7b/XjAhvPYKiL3doAZ6XALBdLF/nQmlh1jcuRy93QWpPxtwSfPjcw
+JLHy+Uq5tC1SnH1YwYhviLG1KEsniUBroUmV2HJyHP92fFI3LPk3xbqxvLh1NXFp
+zSuWjGMA66sZqeEbtMy2B8OLRwQShdHIBWgrIwADBQP+PWkmbg2mraaUmgTswre8
+CGArBgcV+WYm6yaq9IC1G4V1PXmlswmsDlsAr6UDdJU46GFZMIi2WmFJHarEkIBw
+FN44ypSLmiEVwKRJE2/CYO0f7zQHcF6GUSwQo2TxneahrZyHs7GdvpcRcfm0YnlC
+/H1CJ3pl8FpfHttzzIrIJviIRgQYEQIABgUCOxIiVAAKCRCiEVrhX2uLcg0yAKCd
+zbaSPxN+OS1Tq7hJRSq53blllwCfQHZvTM+MqMa6LB0pKeQVs1wVLeA=
+=TAHR
+-----END PGP PUBLIC KEY BLOCK-----
+
+Type Bits/KeyID Date User ID
+pub 1024/697ECEDD 2000/04/06 Henri Gomez <hgomez@slib.fr>
+ *** RPM SIGNING KEY ***
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.3i
+
+mQCNAzjsydwAAAEEAMpwFU/ci3/wR3ryCGp9Exr+Rx/hTQ7hWAJcVw8ejlBXlT4T
+yITlRUs0HGfRWxME2J55PuXXsIEPZzjfozNtvOyq8WlLlJ7iaiyWxVRoPJ25sSEj
+C9etm6wjj4E66ZgzuElZkm1m69uEsCHPPNuz1oQ/g1O+SmIVxIYirlxpfs7dAAUR
+tBxIZW5yaSBHb21leiA8aGdvbWV6QHNsaWIuZnI+iQCVAwUQOOzJ3IYirlxpfs7d
+AQFQyQQAj0D9G0hEL7SQGaSCkkoXwvamQw42N8+tNm+jfWHWdE4HAiVlhJmI2GyD
+sdcXVAcR8R7ILIRB5AY7a3bF+qMk0r+vO6oR878RKKn9AvtaAIOnrh6tr0tiPwf5
+XDUMySxIWJEF3SmJAy9Lq3bAl5GMzZCFHiS0NW2gtWgmr/u1RuM=
+=6l+I
+-----END PGP PUBLIC KEY BLOCK-----
+pub 1024D/EDF62C35 2002-04-10 Magesh Umasankar <umagesh@apache.org>
+sig EDF62C35 2002-04-10 Magesh Umasankar <umagesh@apache.org>
+sub 1024g/B5FFC53F 2002-04-10
+sig EDF62C35 2002-04-10 Magesh Umasankar <umagesh@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.6-2 (MingW32)
+Comment: For info see http://www.gnupg.org
+
+mQGiBDy0ebgRBADuKIKD8PuJ4wKEV1h2AprwJjxCRx8vn48XNwfLZuvhw8cpArtK
+rZwhoGPPUPEEXgtTNerlKq4VwpAwcnvRz7oC/7aWkUbcR2sAyhfe2scohwPgw7Xv
++isWC0NDPdrxvXG/PUOG/cnELunr51ymybBqBxUd2gMhYIxPo67D+YPYLwCgwcZp
+yc/6kJa116ESWHrti342GD8D/1srpnRs9CiS1DQF1uZ1wW4vzj4VD61tKsjdWD8D
+V573R22iMDLSj4oMB536WxUH7snz8XsAKm/peqJ6G9m0smtmWA1ago5yzQj70WqF
+xzWBhHn2I/YfAQ8pb2s9q1lClj8elnCxT65L27ydBAZteejb2VqjtQ6iGy86PUT2
+wRUvBADZmoV1eIZJEM5NnxBv1EtvRYZtIQEzZ8dO2A1LOS7qlVr8IypljNPLGhzX
+VHNvVsjC9QMUSWeBsDedvQHQ3hJpIMnTI32XE1V4gX06gfVTZdhf2fLTtwnsHZp0
+oumqshGDVRhNJJdDYLikxWOxOfkNveKEqJFvtuBR+ZqqluQKebQlTWFnZXNoIFVt
+YXNhbmthciA8dW1hZ2VzaEBhcGFjaGUub3JnPohXBBMRAgAXBQI8tHm4BQsHCgME
+AxUDAgMWAgECF4AACgkQ76Pnee32LDWSRwCfeASWXvpdt7bSFPMtszU/7uPEktsA
+n23mYUN5WKJA1ZreW+0CcZ2ESnOvuQENBDy0eb8QBACBVb9YDJRp9Irzmq71Jf9F
+IPw+4g/cWpF3t/Eb7eSzMcOvTAXyNIWzaaOjHre7lFctHfq8ls/6gR7uqajiAnfQ
+cfTcu7pp+F5KsU0Embt83SFzZ3aoJwETmB/LqUyrrGDiue3lU+flJO7UmcsRvtk0
++BDkyCeB9HgfdpXbBLCyuwADBQP+PNxX4e1tg3ZJo/xNEnD2Re3HjmQRrr0RYJLU
+GjgQrAEONSgowx3IW8/JssmNJVjnYm0qjSKsb8rergCFJhPNZ8Dd/k00pKcrq+IN
+6j7WTYLqPce87zrGAZUtmDwDSp5mxy5ExWJJxsgBPk4YBQLzJt21A3BgK/i24Sze
+2VLbaZuIRgQYEQIABgUCPLR5vwAKCRDvo+d57fYsNa8xAJ4mLfonZbd64+YY9rfv
+hIh3Vsl3AACeLPPKtma2K6XCfhTBEDnjhzSr4vqZAaIEPLR5uBEEAO4ogoPw+4nj
+AoRXWHYCmvAmPEJHHy+fjxc3B8tm6+HDxykCu0qtnCGgY89Q8QReC1M16uUqrhXC
+kDBye9HPugL/tpaRRtxHawDKF97axyiHA+DDte/6KxYLQ0M92vG9cb89Q4b9ycQu
+6evnXKbJsGoHFR3aAyFgjE+jrsP5g9gvAKDBxmnJz/qQlrXXoRJYeu2LfjYYPwP/
+WyumdGz0KJLUNAXW5nXBbi/OPhUPrW0qyN1YPwNXnvdHbaIwMtKPigwHnfpbFQfu
+yfPxewAqb+l6onob2bSya2ZYDVqCjnLNCPvRaoXHNYGEefYj9h8BDylvaz2rWUKW
+Px6WcLFPrkvbvJ0EBm156NvZWqO1DqIbLzo9RPbBFS8EANmahXV4hkkQzk2fEG/U
+S29Fhm0hATNnx07YDUs5LuqVWvwjKmWM08saHNdUc29WyML1AxRJZ4GwN529AdDe
+EmkgydMjfZcTVXiBfTqB9VNl2F/Z8tO3CewdmnSi6aqyEYNVGE0kl0NguKTFY7E5
++Q294oSokW+24FH5mqqW5Ap5tCVNYWdlc2ggVW1hc2Fua2FyIDx1bWFnZXNoQGFw
+YWNoZS5vcmc+iFcEExECABcFAjy0ebgFCwcKAwQDFQMCAxYCAQIXgAAKCRDvo+d5
+7fYsNZJHAJ94BJZe+l23ttIU8y2zNT/u48SS2wCfbeZhQ3lYokDVmt5b7QJxnYRK
+c6+5AQ0EPLR5vxAEAIFVv1gMlGn0ivOarvUl/0Ug/D7iD9xakXe38Rvt5LMxw69M
+BfI0hbNpo6Met7uUVy0d+ryWz/qBHu6pqOICd9Bx9Ny7umn4XkqxTQSZu3zdIXNn
+dqgnAROYH8upTKusYOK57eVT5+Uk7tSZyxG+2TT4EOTIJ4H0eB92ldsEsLK7AAMF
+A/483Ffh7W2Ddkmj/E0ScPZF7ceOZBGuvRFgktQaOBCsAQ41KCjDHchbz8myyY0l
+WOdibSqNIqxvyt6uAIUmE81nwN3+TTSkpyur4g3qPtZNguo9x7zvOsYBlS2YPANK
+nmbHLkTFYknGyAE+ThgFAvMm3bUDcGAr+LbhLN7ZUttpm4hGBBgRAgAGBQI8tHm/
+AAoJEO+j53nt9iw1rzEAniYt+idlt3rj5hj2t++EiHdWyXcAAJ4s88q2ZrYrpcJ+
+FMEQOeOHNKvi+g==
+=p5Yy
+-----END PGP PUBLIC KEY BLOCK-----
+Type Bits/KeyID Date User ID
+pub 1024/397DCAD5 2002/07/03 Henri Gomez <hgomez@users.sourceforge.net>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.3i
+
+mQCNAz0i0UUAAAEEALXePN6IHne0W96YRMnR+4EXB6402QY5f8ZLcnSUZUH55Fb1
+qcZGBc3WRKlPiUvwBD+eVYgCpNSXF/H+oV1mawxNJN5XwqBEpfYmY8MRIPcqa61h
+bJc3LBSm1qNf05G5Cwxeed+OgVm0r1HBy6DAgDHAqNlkC8DZ/BVgqMA5fcrVAAUR
+tCpIZW5yaSBHb21leiA8aGdvbWV6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD6JAJUD
+BRA9ItFFFWCowDl9ytUBASNyA/458T84LUVhqq6Y9fPBAfcFMWY2kehuDWsQEXkO
+46XoK+AnFZCkKuyDLqPHchVUO5pK/gZYsDK/xJkfh3u4FTDTsecb9wFmIeyayVIN
+SI8o6l8EZzDX/PGwqEwzxHrbQkIgIktNn5ApIoazvdBpbkQfNj1vr2wWoMYPLAWM
+8xzecA==
+=UmZ8
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.6 (GNU/Linux)
+Comment: For info see http://www.gnupg.org
+
+mQGiBD02vbERBAC1v8fR6gjERpaz4UMfdy0hRVWCPSbOdF+Swm/IenjVzErco6zb
+MTa13umUNrDPBy/tTWiCCZrOnqi7fgDzWqPEqrXJjKAFVLEWE6MmKylPPEPG1/bm
+idkNGERSAZduvhKv777PzvEJJ/8eGe3wy/O8NbgIjCPtr4UklwCZS8cFuwCg8oMO
+UdT8qZRtzdxdAyu1m5fUb+MD/3IKJYWXsdtb6iBphCU4f/BoyjVC9EZJ1ywLuiVM
+siKbuaDUaXU9nWcbNKv+fx8uZ1NaadpfLokqqhnWcpnSiqw8HNR7SwsF1D33rkXK
+O4FSuVss/tIoqGdWFcJyPkP4yP5shxqR335narVw2vDa0+BiWkALbA2qVsSIdZDB
+LeFZA/47AMBS0U2BRk2rQT8LmMuFl7mR+wNBM4n7FUGdxsGn3TcYd4pXTNrEQPrV
+YNdooKlikgGk4hgFnIFX09Spmimqgq0goFue81rttVdZZ4uep8dTghY6gwmvcOxX
+jATbhWStBhdu9B35kzfHc+1QihD5Z94u4uyWIVBIzikcdiY8LbQqSGVucmkgR29t
+ZXogPGhnb21lekB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+iFcEExECABcFAj02vbEF
+CwcKAwQDFQMCAxYCAQIXgAAKCRAZMdaEMHoQpYijAKCCP68ndU/kTXR9XAKLvibC
+3S8+1QCfUFQYte3Jo+MHKaWjsu9JGptRzo+5Ag0EPTa93RAIAKlsRJ5gOGTFsmaR
+W9k6MIh4c/MCy7J7HUxT5xTdHROa+3zUh+FAE/JaOx9ZtZtH863DFHA8cP4L+tpi
+PjBT6g2E94dwGcuH/OiSSCT4JSBukbGbOuLLdmFXqUl8+4gsL90Xal67FtNLwyLG
+1n7geLir0byD+OT7VLA5w+6G0NOpJEveV/FIa2qLgdRZ8vz73ybgMh18hBUrUmro
+jncp0rln2VU7VCH1C2aClKm7kK4mGAjIFIzKbguK+kM3b8NDHmXKpT6syyCtIM3h
+prkV1TUCAFqLI32aSdlTN79lpeA2zDga9k4/4X/RDHsFpRN2neRFGTNUtuUgYpQQ
+E5zWBmMAAwUH/RiGxyeBsad923IwE1+GAjxFl2tqF9xWk0J6yTnSK4nfhYAE9evV
+jwDEok9jRl4ILCcXx6YN/d/lWNuSbARKHz/3hLiTouPpwd3SSJ8is2x9PgpJz5JX
+cD0y1SkbPLvs3jH3ZmdcxZpuAmJeI/typqFKK5pWP44oXIH+XH/8nWDtmLEBkgKQ
+/ATQWenMTmZ6MIJ6aWKWGkO9QS6iYRz3PPPGQ1O8W02CeprM2wBtlb8J1Z3RxNhM
+rZcg/1Qi3V3D1HI4zw6tAFmDeBb8J4PaBQzqlhzx2EBTbfwNPhV8AlPvpxHEeGGn
+v+O1yhZr33SnyZdINNoNDn+owVMdmkobe9GIRgQYEQIABgUCPTa93QAKCRAZMdaE
+MHoQpRsTAJ4qst3MhLm48fBAEnzuzi/BIKr+AgCfYaCB/AvPoncQbHc8BcNGRimR
+P9A=
+=hQhz
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build/tools/jakarta-ant-1.5.1/LICENSE b/build/tools/jakarta-ant-1.5.1/LICENSE new file mode 100644 index 000000000..0f8706c6f --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/LICENSE @@ -0,0 +1,49 @@ +/*
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 2000-2002 The Apache Software Foundation. All
+ * rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. 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
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */
diff --git a/build/tools/jakarta-ant-1.5.1/LICENSE.dom b/build/tools/jakarta-ant-1.5.1/LICENSE.dom new file mode 100644 index 000000000..2959b704a --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/LICENSE.dom @@ -0,0 +1,71 @@ +This license came from:
+http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+
+W3C® SOFTWARE NOTICE AND LICENSE
+Copyright © 1994-2001 World
+Wide Web Consortium, <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.
+http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related
+items) is being provided by the copyright holders under the
+following license. By obtaining, using and/or copying this work,
+you (the licensee) agree that you have read, understood, and will
+comply with the following terms and conditions:
+Permission to use, copy, modify, and distribute this software
+and its documentation, with or without modification, for any
+purpose and without fee or royalty is hereby granted, provided that
+you include the following on ALL copies of the software and
+documentation or portions thereof, including modifications, that
+you make:
+
+The full text of this NOTICE in a location viewable to users of
+the redistributed or derivative work.
+
+Any pre-existing intellectual property disclaimers, notices, or
+terms and conditions. If none exist, a short notice of the
+following form (hypertext is preferred, text is permitted) should
+be used within the body of any redistributed or derivative code:
+"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of
+Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/"
+
+Notice of any changes or modifications to the W3C files,
+including the date changes were made. (We recommend you provide
+URIs to the location from which the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND
+COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
+USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
+SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without
+specific, written prior permission. Title to copyright in this
+software and any associated documentation will at all times remain
+with copyright holders.
+____________________________________
+This formulation of W3C's notice and license became active on
+August 14 1998 so as to improve compatibility with GPL. This
+version ensures that W3C software licensing terms are no more
+restrictive than GPL and consequently W3C software may be
+distributed in GPL packages. See the older formulation for the
+policy prior to this date. Please see our Copyright FAQ for common
+questions about using materials from
+our site, including specific terms and conditions for packages like
+libwww, Amaya, and Jigsaw.
+Other questions about this notice can be
+directed to site-policy@w3.org.
+
+webmaster
diff --git a/build/tools/jakarta-ant-1.5.1/LICENSE.sax b/build/tools/jakarta-ant-1.5.1/LICENSE.sax new file mode 100644 index 000000000..05bccc9ae --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/LICENSE.sax @@ -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
\ No newline at end of file diff --git a/build/tools/jakarta-ant-1.5.1/LICENSE.xerces b/build/tools/jakarta-ant-1.5.1/LICENSE.xerces new file mode 100644 index 000000000..28282b456 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/LICENSE.xerces @@ -0,0 +1,56 @@ +/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xerces" 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 apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 1999, International
+ * Business Machines, Inc., http://www.ibm.com. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
diff --git a/build/tools/jakarta-ant-1.5.1/README b/build/tools/jakarta-ant-1.5.1/README new file mode 100644 index 000000000..311e96cac --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/README @@ -0,0 +1,70 @@ +
+ A N T
+
+
+ What is it?
+ -----------
+
+ Ant is a Java based build tool. In theory it is kind of like "make"
+ without makes wrinkles and with the full portability of pure java code.
+
+
+ Why?
+ ----
+
+ Why another build tool when there is already make, gnumake, nmake, jam,
+ and others? Because all of those tools have limitations that its original
+ author couldn't live with when developing software across multiple platforms.
+
+ Make-like tools are inherently shell based. They evaluate a set of
+ dependencies and then execute commands not unlike what you would issue on a
+ shell. This means that you can easily extend these tools by using or writing
+ any program for the OS that you are working on. However, this also means that
+ you limit yourself to the OS, or at least the OS type such as Unix, that you
+ are working on.
+
+ Makefiles are inherently evil as well. Anybody who has worked on them for any
+ time has run into the dreaded tab problem. "Is my command not executing
+ because I have a space in front of my tab!!!" said the original author of Ant
+ way too many times. Tools like Jam took care of this to a great degree, but
+ still use yet another format to use and remember.
+
+ Ant is different. Instead a model where it is extended with shell based
+ commands, it is extended using Java classes. Instead of writing shell
+ commands, the configuration files are XML based calling out a target tree
+ where various tasks get executed. Each task is run by an object which
+ implements a particular Task interface.
+
+ Granted, this removes some of the expressive power that is inherent by being
+ able to construct a shell command such as `find . -name foo -exec rm {}` but
+ it gives you the ability to be cross platform. To work anywhere and
+ everywhere. And hey, if you really need to execute a shell command, Ant has
+ an exec rule that allows different commands to be executed based on the OS
+ that it is executing on.
+
+ The Latest Version
+ ------------------
+
+ Details of the latest version can be found on the Apache Jakarta
+ Project web site <http://jakarta.apache.org/>.
+
+
+ Documentation
+ -------------
+
+ Documentation is available in HTML format, in the docs/ directory.
+ For information about building and installing Ant, see
+ docs/manual/index.html
+
+
+ Licensing
+ ---------
+
+ This software is licensed under the terms you may find in the file
+ named "LICENSE" in this directory.
+
+
+ Thanks for using Ant.
+
+ The Apache Jakarta Project
+ <http://jakarta.apache.org/>
diff --git a/build/tools/jakarta-ant-1.5.1/WHATSNEW b/build/tools/jakarta-ant-1.5.1/WHATSNEW new file mode 100644 index 000000000..4fb603c00 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/WHATSNEW @@ -0,0 +1,1301 @@ +Changes from Ant 1.5.1Beta1 to 1.5.1
+====================================
+
+Fixed bugs:
+-----------
+
+* <tstamp>'s prefix attribute failed to apply to nested <format> elements.
+
+* <junitreport> created an empty junit-noframes.html if no format had
+ been specified.
+
+* <basename> would remove more than it should if the file name
+ contained more than one dot.
+
+* <filterset>s nested into <filterset>s didn't work.
+
+Other changes:
+--------------
+
+* Shipped XML parser is now Xerces 2.2.0
+
+* Filesets now support a 'file' attribute, allowing a single-file
+ fileset to be constructed without having to specify its parent
+ directory separately.
+
+* <junit> will now return the result of a call to getName instead of
+ "unknown" for Test implementations that don't extend TestCase but have
+ a public String getName() method.
+
+Changes from Ant 1.5 to 1.5.1Beta1
+==================================
+
+Fixed bugs:
+-----------
+* Date/time in CvsChangeLog was in local timezone and 12 hour format leading
+ to a problem when sorting by time. It is now UTC (GMT) and in 24-hour
+ format as per cvs 'specifications'.
+
+* CvsTagDiff now supports ampersand modules or modules that have a different
+ root directory than their name.
+
+* EjbJar threw NPEs for the Websphere element. The property 'websphere.home'
+ was not documented.
+
+* Mail example in the documentation was not correct.
+
+* Checksum was broken in the following scenario:
+ (using verifyproperty OR in a condition) AND using filesets
+ with multiple files.
+
+* The ExpandProperties filter threw NPEs when defined using
+ the <filterreader> format.
+
+* The sh wrapper script didn't work under Cygwin if ANT_HOME wasn't
+ set with a Unix style filename.
+
+* The sh wrapper script could fail if you started Ant from a directory
+ with whitespace in its name.
+
+* ant -diagnostics was not working properly when the task dependency
+ was missing and was just printing the missing dependency.
+
+* If a task got redefined via <taskdef>, it lost its child elements.
+
+* <property>'s classpathref attribute was broken.
+
+* <arg line="''" /> would result in no command line argument, will now
+ be a single empty argument. Use <arg value="''"/> if you need the
+ quotes literally.
+
+* <replaceregexp> could append a newline character at the end of the
+ file.
+
+Other changes:
+--------------
+
+* Appendix E of Java Development with Ant (Loughran/Hatcher) was
+ contributed to the docs.
+
+* <available> will only print deprecration warnings if it is actually
+ used to change the value of a property.
+
+Changes from Ant 1.5beta3 to Ant 1.5
+====================================
+
+Changes that could break older environments:
+--------------------------------------------
+
+* The filesetmanifest attribute added to <jar> after the 1.4.1
+ release has been removed for now. This change may affect only
+ the 1.5Beta/1.6Alpha users. An attempt will be made to add this
+ feature back into Ant 1.6.
+
+Fixed bugs:
+-----------
+
+* <zip> and friends would always update existing archive if you set
+ the update attribute to true.
+
+* To support backward compatibility with older versions, <pathconvert>
+ will once again set the property, even if the result is the empty
+ string, unless the new 'setonempty' attribute is set to false|no|off
+ (default is "true").
+
+* The manifest task would crash XmlLogger
+
+Other changes:
+--------------
+
+* added **/.svn and **/.svn/** to the default excludes
+
+Changes from Ant 1.5beta2 to Ant 1.5beta3
+=========================================
+
+Changes that could break older environments:
+--------------------------------------------
+
+* Project.getBuildListeners now returns a clone of the listener
+ list. Changes to the returned list will not affect the listeners
+ currently attached to the Project. It also means that it is safe to
+ iterate over the returned list if listeners are added or removed
+ during the traversal.
+
+* <pvcs> default filenameformat has been different from Ant 1.4.1.
+ Now it is different from 1.5beta1 and 1.5beta2.
+
+* Some messages that are printed during startup will not be
+ written to the logfile specified via -logfile as they might destroy
+ the format of the file for special BuildLoggers (like XmlLogger).
+
+* <pathconvert> won't set the property if the result is the empty string.
+
+Fixed bugs:
+-----------
+
+* <available> could fail to find files or directories that happen to
+ start with the name of the project's basedir but are not children of
+ the basedir.
+
+* Nested <property>'s inside <ant> can now be overriden by subsequent
+ <ant> and <antcall> tasks.
+
+* <xslt>'s outputtype attribute wouldn't do anything.
+
+* <linecontains> filterreader could swallow lines.
+
+* <sequential> used to configure the tasks (set their attributes)
+ before the first task has been executed. This means that properties
+ that have been set by nested task seemed to be unset for the other
+ tasks in the same <sequential> element.
+
+* <javac>'s sourcepath setting has been ignored by some compiler
+ implementations.
+
+* <javadoc>'s packagelist attribute didn't work.
+
+* the plain mailer would always use port 25 in <mail>.
+
+* Ant's default logger could swallow empty lines.
+
+* ejbjar's iPlanet nested element now can process multiple descriptors.
+
+* IPlanetEjbc was looking in the wrong place for four iiop files.
+
+* <javac> would pass the -source switch to JDK 1.3's javac, even
+ though it doesn't support it.
+
+Other changes:
+--------------
+
+* <checksum> now uses a buffer (of configurable size).
+
+* The "Trying to override task definition" warning has been degraded
+ to verbose level if the two task definitions only differ in the class
+ loader instance that has loaded the definition.
+
+* Add a jvmargs to the ejbjar's weblogic element to allow additional
+ arguments to be provided to the VM runnign ejbc. Document the
+ jvmdebuglevel attribute which can be used to avoid warnings about
+ interface classess being found on the classpath. Document the new
+ <sysproperty> element which allows JVM properties to be defined.
+ Added an outputdir attribute to allow the destination to be a
+ directory into which the exploded jar is written.
+
+* ejbjar now supports Borland Enterprise Server 5 and Jonas 2.5
+
+Changes from Ant 1.5beta1 to Ant 1.5beta2
+=========================================
+
+Changes that could break older environments:
+--------------------------------------------
+
+* Properties will now be expanded in mail message bodies. This means
+that one $ sign will be stripped if your mail message contains the text
+$$.
+
+* org.apache.tools.ant.taskdefs.Expand no longer extends MatchingTask.
+
+* Available#setFile now again uses a File argument as it did in 1.4,
+this may break environments that have been adapted to the String
+argument version present in 1.5beta1.
+
+Fixed bugs:
+-----------
+* When <move> attempts a rename, it deletes the destination file, if it
+ exists, before renaming the source file. However, <move> was not
+ checking if the destination file was actually a directory before
+ trying to delete it.
+
+* Make CVS Tasks to work under Cygwin.
+
+* Fix LineContains to handle huge files elegantly without causing
+Stack Overflows.
+
+* if you ask for the "classic" compiler on Java1.4, you get upgraded to
+"modern" because there is no classic compiler any more.
+
+* the <http> condition was viewing 404 'not found' exceptions as success. Now
+it defaults to viewing any response >=400 as an error, and has an errorsBeginAt
+attribute you can use if you want a higher or lower value.
+
+* <get> throws a build exception on an http authorization error, unless you
+have set ignoreerrors to true.
+
+* <wsdltodotnet> was spelt in Wintel case: <WsdlToDotnet>. It is now lower
+case, though the old spelling is retained for anyone who used it.
+
+* Merging of Manifests in jar now works as documented.
+
+* paths that have been separated by colons would be incorrectly parsed
+on NetWare.
+
+* runant.pl now supports NetWare.
+
+* <tempfile> and <setproxy> tasks were in beta1, but not defined by
+default; They now are. <tempfile> fills a property with the name of a
+temporary file; <setproxy> lets you set the JVM's http, ftp and socks proxy
+settings.
+
+* <available classname="foo" ignoresystemclasses="true"> failed for
+JDK 1.1 and 1.2, even if the class could be found on the
+user-specified classpath.
+
+* <property environment=... /> now works on z/OS.
+
+* forked <javac> failed for the wrong reason on JDK 1.1 - Ant would
+use a temporary file to hold the names of the files to compile under
+some conditons, but 1.1 doesn't support this feature. Ant will no
+longer try this, but you may run into problems with the length of the
+command line now.
+
+* the refid attribute for <property>s nested into <ant> or <param>s
+nested into <antcall> didn't work.
+
+* <replaceregexp> didn't work for nested <fileset>s.
+
+* <javadoc> dropped sourcepath entries if no "interesting" .java
+source files could be found below them. This has been backwards
+incompatible and caused problems with custom doclets like xdoclet.
+
+* Using the doclet, docletpath or docletpathref attributes of
+<javadoc> may have caused NullPointerExceptions.
+
+* nested <filesets> of <javadoc> would include too much.
+
+* <dependset> will no longer choke on <targetfileset>s that point to
+non-existing directories.
+
+* <patch> didn't work at all.
+
+* <replace> and <replaceregexp> now fail if the file they are working
+on is locked.
+
+* <javadoc> would pick up the wrong executable in the combination JDK
+1.2 and AIX.
+
+Other changes:
+--------------
+
+* z/OS now gets detected by the os condition.
+
+* <fileset> and <dirset> now have an optional followsymlink attribute
+that can prevent Ant from following symbolic links on some platforms.
+
+* BeanShell is now supported in the <script> task.
+
+* <ejbjar> under Weblogic attempts to use the ejbc20 compiler for 2.0 beans
+ based on the deployment descriptor's DTD reference. Under weblogic 7.00 Beta
+ this ejbc class has been deprecated. To avoid the deprecation warning use
+ ejbcclass="weblogic.ejbc".
+
+* <ejbjar> will add a manifest to the generated jar based on the naming
+ convention in use. This overrides the manifest specified in the
+ <ejbjar> attribute
+
+
+Changes from Ant 1.4.1 to 1.5beta1
+==================================
+
+Changes that could break older environments:
+--------------------------------------------
+
+* Important: Single $ signs are no longer silently stripped!
+ Before you panic that we have broken all your build files, we have kept
+ the old "$$" -> "$" behaviour. So only build files which accidentally had
+ a $ sign in a string that was being silently stripped may break.
+ We added this fix to stop newbie confusion; if you want to write a
+ build file which works on ant versions 1.4.1 or earlier, stay with
+ the double $$ sign rule.
+
+* Shipped XML parser is now Xerces 2.0.1 along with the XML Parser APIs.
+ XML Parser APIs is a separate jar that contains the necessary
+ JAXP/DOM/SAX classes.
+
+* <telnet> was fixed to expand properties inside nested <read> and
+ <write> elements; before this only happened when you assigned the text
+ to the string attribute. If you had $ signs in the string, they may
+ need escaping.
+
+* the RegexpMatcher interface has been extended to support case
+ insensitive matches and other options - custom implementations of
+ this interface won't work any longer. We recommend to use the new
+ Regexp interface that also supports substitution instead of the
+ RegexpMatcher interface in the future.
+
+* <gzip> will throw an exception if your src attribute points to a directory.
+
+* Unjar, Unzip and Unwar will throw an exception if the Src attribute
+ represents a directory. Support for nested filesets is provided
+ instead.
+
+* It is no longer possible to overwrite a property using tasks like
+ <condition>, <exec>, <pathconvert>, or <tstamp>. In some exceptional
+ cases it will generate a warning if you attempt to overwrite an
+ existing property.
+
+* Taskwriters please note: Whenever tasks had any overloaded set* methods,
+ Ant's introspection mechanism would select the last overloaded method
+ provided to it by the Java Runtime. A modification has now been made such
+ that when the Java Runtime provides a method with a String as its argument,
+ a check is made to see if there is another overloaded method that takes in
+ some other type of argument. If there is one such method, then the method
+ that takes in String as an argument is not selected by the Introspector.
+
+* The pattern definition **/._* has been included into the Default
+ Excludes list.
+
+* <propertyfile>'s <entry> element was modified to remove "never" as a value
+ as its behavior was undocumented and flakey.
+
+* The -projecthelp flag now only prints out targets that include the
+ 'description' attribute, unless the -verbose or -debug flag is included
+ on the Ant command line.
+
+* Ant's testcases now require JUnit 3.7 or above, as they now use the new
+ assertTrue method instead of assert.
+
+* If the 'output' attribute of <ant> is set to a simple filename or a
+ relative path, the file is created relative to ${basedir}, not ${user.dir}.
+
+* The default value for build.compiler is now javac1.x with x
+ depending on the JDK that is running Ant instead of classic/modern.
+
+Fixed bugs:
+-----------
+* A bug existed that prevented generated log files from being deleted as
+ part of the build process itself. This has now been fixed.
+
+* Fixed bug where <move> ignored <filterset>s.
+
+* Ant works properly with the combination of Java1.4/WindowsXP.
+
+* Fixed bug where <java> used to sometimes invoke class constructors twice.
+
+* Fixed bug with 4NT shell support.
+
+* Fixed bug where ant would not perform ftp without remotedir being
+ specified even though this was not mandatory.
+
+* Fixed bug where ant would not copy system properties into new Project
+ in ant/antcall tasks when inheritall="false" is set.
+
+* <propertyfile> would not close the original property file.
+
+* <ant> will no longer override a subbuild's basedir with inheritall="true".
+
+* Fixed problem with the built-in <junit> formatters which assumed
+ that only one test could be running at the same time - this is not
+ necessarily true, see junit.extensions.ActiveTestSuite.
+
+* <jar>'s whenEmpty attribute is useless as JARs are never empty, they
+ contain at least a manifest file, therefore it will now print a
+ warning and do nothing.
+
+* <typedef> hasn't been all that useful as it couldn't be used outside
+ of targets (it can now) and nested "unknown" elements have always
+ been considered to be tasks (changed as well).
+
+* <fixcrlf> would fail for files that contained lines longer than 8kB.
+
+* Some junit formatters incorrectly assumed that all testcases would
+ inherit from junit.framework.TestCase.
+
+* <fixcrlf> dropped the first characters from Mac files.
+
+Other changes:
+--------------
+* Selector Elements now provide a way to create filesets based on
+ sophisticated selection criteria.
+
+* Gzip and Bzip2 files can now be constructed in the fly when using
+ the tar task without having to create the intermediate tar file on
+ disk. The Untar task can also untar GZip and BZip2 files on the fly
+ without creating the intermediate tar file.
+
+* New optional type, <classfileset> added.
+
+* <ejbjar> now allows control over which additional classes and interfaces
+ are added to the generated EJB jars. A new attribute "dependency" can be
+ defined which controls what classes are added. The addition of classes now uses
+ the Jakarta-BCEL library rather than reflection, meaning bean classes are
+ no longer loaded into Ant's JVM. The default dependency analyzer is known as
+ the ancestor analyzer. It provides the same behaviour as the 1.4.1 version of
+ <ejbjar>. If the BCEL library is not present, a warning will be issued stating
+ the ancestor analyzer is not available. In this case <ejbjar> will continue
+ to function but will not add super classes to the jar.
+
+* <available> has a new attribute named ignoreSystemClasses.
+
+* New task <cvschangelog/> generates an XML report of changes that occur
+ on CVS repository.
+
+* New filter readers: ClassConstants, ExpandProperties, HeadFilter,
+ LineContains, LineContainsRegExp, PrefixLines, ReplaceTokens,
+ StripJavaComments, StripLineBreaks, StripLineComments, TabsToSpaces,
+ TailFilter.
+
+* <copy>, <loadfile>, <loadproperties>, <move> support FilterChains
+ of FilterReaders.
+
+* New task <loadproperties> to load contents of file as Ant properties,
+ with nested <filterchain> elements.
+
+* New task <loadfile> to load a whole file into a property.
+
+* New task <echoproperties> to list your current properties to the screen
+ or a file.
+
+* New tasks <bzip2> and <bunzip2> to pack and unpack files using the
+ BZip2 alogrithm.
+
+* New tasks <replaceregexp>, <checksum>, <translate>, <waitfor>,
+ <manifest>, <vsscp>, <vssadd>, <vsscreate>, <splash>, <basename>, <dirname>,
+ <concat>, <sourceoffsite>, <jarlib-available>, <jarlib-display>,
+ <jarlib-manifest>, <jarlib-resolve>.
+
+* A new combined <mail> task, which replaces the old <mail> and
+ <mimemail> tasks, has been added. The <mimemail> task, and
+ old SendEmail and MimeMail classes have been deprecated.
+
+* Mail task allows specification of port number.
+
+* Users can control what <zip> and <jar> must do when duplicate files
+ are found. A new element <zipgroupfileset> allows for multiple zip
+ files to be merged into the archive. In addition, <jar> also has
+ another new attribute: filesetmanifest. The existing manifest
+ attribute of <jar> now also accepts the name of a jar added through
+ a fileset.
+
+* gzip now checks that the zipfile is older than the source file
+ before rebuilding the zipfile.
+
+* TarFileset takes in three new attributes - fullpath, prefix
+ and preserveLeadingSlashes.
+
+* <move> attempts to rename the directory, if everything inside it is
+ included, before performing file-by-file moves. This attempt will
+ be done only if filtering is off and if mappers are not used. This
+ is a performance improvement and there is no change otherwise in
+ the funtionality of this task.
+
+* Exec task has extra attribute "resultproperty" to get the return code
+ into a property.
+
+* Exec task prints a message when a timed-out process is killed.
+
+* Added optional attributes - name, arch and version to the <os> task.
+
+* Unjar, Untar, Unwar and Unzip now support patternsets to
+ select files from an archive for extraction. Filesets may be
+ used to select archived files for unarchival.
+
+* Javac task allows debug levels to be specified. Debug levels
+ will have an effect only when the modern compiler or the
+ classic compiler (version 1.2 and higher) is used and debugging
+ is enabled.
+
+* Added support for specifying CVS_RSH in the <cvs/> task
+
+* The attributes zipfile, jarfile, warfile and earfile (from the Zip,
+ Jar, War and Ear tasks) have been deprecated and superseded by a
+ new attribute "destfile".
+
+* Added new conditions <isset>, <checksum>, <http>, <socket>, <contains>,
+ <filesmatch>.
+
+* <taskdef> and <typedef> will now emit a warning if a task/type of
+ the given name already exists.
+
+* A new revision of VAJ tasks: The most important new feature
+ is the ability to execute VAJ tasks from the command line by
+ exploiting the Remote Tool Access feature of VAJ.
+
+* Improved support for Novell NetWare.
+
+* Added an optional encoding attribute to <fixcrlf>.
+
+* <apply> has a new attribute relative that allows users to pass the
+ filenames as relative instead of absolute paths on the command line.
+
+* References can now be copied into the child build by <ant> and
+ <antcall> using nested <reference> elements or the new inheritRefs
+ attribute.
+
+* <fail> now supports builds to fail based on conditions via if and
+ unless attributes.
+
+* Ant now comes with two new BuildLogger implementations - one that
+ can send emails containing a log of the build process (MailLogger),
+ and one that colorizes the output based on message levels, using
+ ANSI color code escape sequences (AnsiColorLogger).
+
+* A "package" mapper type has been added to allow package directory
+ names replaced with the dotted form.
+
+* You can now specify environment variables in the <java> and <junit> tasks
+ if the fork attribute has been set to true.
+
+* -propertyfile command-line option has been added to load an entire
+ property file just as -D properties are declared (as user properties).
+ -D properties take precedence over -propertyfile specified ones.
+
+* You can now set an ANT_ARGS environment variable to hold arguments you
+ always want passed to the 'ant' command -- for example, if you always
+ want to use a different logger or the -find flag.
+
+* <tstamp> now supports a new "prefix" attribute to prefix properties set.
+
+* You can now specify the -sourcepath for <javac> explicitly.
+
+* <javac> now supports a new "listfiles" attribute to list the source
+ files it's handing off to the compiler.
+
+* The compiler implementation for <javac> can now be chosen on a task by
+ task basis. The new "compiler" attribute of <javac> can be used to override
+ the value of the build.compiler property, if set.
+
+* <javac> has a new nested element, <compilerarg>, which allows you
+ to specify additional args for the specific compiler you're using.
+
+* <javac>'s "source" attribute is now enabled for jikes as well.
+
+* <propertyfile>'s <entry> now has a 'unit' attribute to specify the
+ increment/decrement unit on date operations.
+
+* <property> now supports a 'prefix' attribute when loading from a file
+ or resource.
+
+* In Ant 1.4, a feature has been added to the <junit> task that would
+ add ant.jar, optional.jar and junit.jar implicitly to the classpath -
+ this feature can now be disabled by setting the new includeantruntime
+ attribute to false.
+
+* <style> behaves differently from any other directory-based task, as it
+ processes all files that it finds in included directories in
+ addition to the files matched by your patterns. There is now a new
+ attribute, 'scanincludeddirectories', to suppress this behavior.
+
+* <javadoc> now supports a <tag> nested element to provide the -tag option
+ to the standard Java 1.4 doclet. The element is ignored when not running
+ on Java 1.4.
+
+* <ftp> can now chmod files on a remote server that supports
+ "site chmod", as well as set the umask before transferring files, if
+ the server supports "site umask".
+
+* New <serverdeploy> "optional" task.
+
+* <patternset> now supports nested patternsets.
+
+* Perforce tasks now support a "failonerror" attribute (defaults to "true").
+
+* Open Source application server JOnAS support:
+ EJB hot deploy and deploy with <serverdeploy> and <ejbjar>
+
+* Added new DirSet (<dirset>) datatype.
+
+* <path> now supports nested <dirset> and <filelist> elements.
+
+* <pathconvert> now supports nested <dirset> and <filelist> elements.
+
+* <pathconvert>'s "dirsep" and "pathsep" attributes now accept
+ multi-character values.
+
+* <copy> task now has a 'failonerror' attribute to allow keep-going
+ behaviour when the file to be copied is not found (defaults to "true").
+
+* <uptodate> now has a 'srcfile' attribute to allow specifying a
+ full-path filename.
+
+* <exec>, <sql> and <java> now support append attributes to allow
+ appending the output to an existing file.
+
+* <java> now supports a timeout attribute analog to <exec> - it is
+ highly recommended to only use it together with fork="true".
+
+* <javadoc> now supports a source attribute to enable javadoc to
+ handle assertions present in JDK 1.4 source code.
+
+* <replace> supports a new replacefilterfile attribute that
+ automatically turns all properties of a given file into
+ replacefilters.
+
+* An alias of <xslt> has been added to refer to the <style> task.
+
+* The compiler implementation for <rmic> can now be chosen on a task by
+ task basis. The new "compiler" attribute of <rmic> can be used to override
+ the value of the build.rmic property, if set.
+
+* <rmic> has a new nested element, <compilerarg>, which allows you
+ to specify additional args for the specific compiler you're using.
+
+* org.apache.tools.ant.XmlLogger now is a BuildLogger, rather than just
+ a BuildListener. It can operate in either mode successfully.
+
+* <junit> has a new attribute "showoutput". If set to true, output
+ generated by tests will be sent to Ant's logging system as well as
+ to the formatters (instead of sending it to the formatters
+ exclusively).
+
+* Ant has now a pluggable way to prompt users for input, which is used
+ by the new <input> task. IDE integrators can provide an
+ implementation of the InputHandler interface to decouple Ant's input
+ from the console. An implementation that gets its input from a file
+ for unattended builds is part of Ant's distribution.
+
+ For more details see docs/manual/inputhandler.html.
+
+* <patch> has a new attribute that selects the directory in which to
+ run the command.
+
+* <javadoc> now supports two new nested elements, <fileset> and <packageset>.
+
+Changes from Ant 1.4 to Ant 1.4.1
+===========================================
+
+Fixed bugs:
+-----------
+
+* <ant>'s antfile attribute will now also be considered an absolute path on
+ Windows systems, if it starts with a \ and no drive specifier.
+
+* The fullpath attribute of <zipfileset> has been ignored if you used
+ the src attribute at the same time.
+
+* The manifest file is now always placed as the second entry (after /META-INF)
+ in generated jars. This allows the manifest to be read by JarInputStreams
+
+* Fixed bug in depend task which would fail with a NullPointerException if no
+ dependency cache was specified.
+
+* sql task now handles REM statements correctly so that lines starying with rem
+ but which are not comments are actually processed.
+
+* XMLLogger now uses the task's name rather than the classname
+
+* <mapper>s will now work as expected if the to pattern expands to an
+ absolute pathname.
+
+* <javac> didn't ignore memory settings in non-fork mode
+
+* <cab> didn't split the options attribute into several command line
+ arguments correctly.
+
+Other changes:
+--------------
+
+* New source attribute for <javac> to enable assertion in JDK 1.4
+
+* XmlLogger and <antstructure> now add an encoding declaration to the
+ XML files they generate.
+
+* <fileset> has a new attribute "casesensitive" to make it match
+ filenames in a case insensitive way (if you set it to false) - by
+ default filesets remain case sensitive.
+
+Changes from Ant 1.3 to Ant 1.4
+===========================================
+
+Changes that could break older environments:
+--------------------------------------------
+* JUnitReport now uses the xalan redirect extension for multi-output.
+ With Xalan 1.2.2 it forces the use of bsf.jar in the classpath.
+ (Available in the xalan distribution). It is recommended to switch
+ to Xalan 2.x that do not need it.
+
+* Zip.setWhenempty() has changed its signature.
+
+* <rmic> is now implemented using a factory. This makes extending
+ rmic to use a new compiler a lot easier but may break custom
+ versions of this task that rely on the old implementation.
+
+* several Zip methods have changed their signature as we now use a Zip
+ package of our own that handles Unix permissions for directories.
+ Furthermore <zip> will now use the platform's default character
+ encoding for filenames - this is consistent with the command line
+ ZIP tools, but causes problems if you try to open them from within
+ Java and your filenames contain non US-ASCII characters. Use the new
+ encoding attribute of the task and set it to UTF8 to get the old
+ behavior.
+
+* The <pvcs> task has been moved to a package of its own.
+
+* JUnitResultFormater has two additional methods that must be
+ implemented by custom formatters.
+
+* Ant will no longer use the canonical version of a path internally -
+ this may yield different results on filesystems that support
+ symbolic links.
+
+* The output generated by the xml formatter for <junit> has changed
+ again, it doesn't format the numeric value in the time attribute anymore.
+
+* Pattern matching rules have changes slightly, the pattern foo*
+ doesn't match files contained in a directory named foo - use foo/*
+ instead.
+
+* <fixcrlf> will not remove trailing whitespace at the end of lines anymore.
+
+* The Classloader usage has been changed for the taskdef, property, available
+ and sql tasks so that it delegates to the parent classloader. This may cause
+ ClassNotFoundExceptions to be thrown if a system class attempts to load a
+ class in the taskdef's classpath (typically factory objects).
+
+* Ant now allows multithreading of tasks and the containment of tasks within
+ other tasks. This can break customer listeners which do not expect messages
+ from a task before the previous task has finished.
+
+* Ant now installs its own ouput stream into System.out to route output to the
+ task currently executing on the current thread. This also means that all
+ output is now routed as Ant message events. Customer listeners and loggers
+ should not call System.out at any time. This has always been true but such
+ usage now will cause problems due to possible recursion.
+
+* Invalid manifest files will now cause build failures in the <jar> task.
+
+* Ant Introspection now looks for methods with method names starting with
+ addConfigured. When called these methods are passed an argument after it has
+ been configured from the build file. Custom tasks supporting nested elements
+ starting with the name configured will no longer function.
+
+* The environment variable JAVACMD that can be used to specify the
+ java executable to Ant's wrapper scripts must not contain additional
+ command line parameters any longer - please use the environment
+ variable ANT_OPTS for such parameters now.
+
+* Ant's wrapper scripts now quote the CLASSPATH environment variable, thus
+ supporting classpaths which refer to directories containing spaces. This means
+ that the CLASSPATH environment variable cannot have quotes. Any quotes should
+ be removed. This will not affect the operation of the CLASSPATH environment
+ variable in other contexts.
+
+* A delete task like
+ <delete includeEmptyFilesets="true">
+ <fileset dir="somedir" />
+ </delete>
+ will now remove "somedir" as well, unless there are still files left
+ in it (matched by the default excludes).
+
+* The copy task will now fail if the file to be copied is not found.
+
+* Ant properties defined in properties files now behave the same way as
+ properties defined in the build file. In particular the $ character needs
+ to be escaped in property values by doubling it to $$. So, to define a
+ property with the value $hello, you need to define it in a properties file
+ as
+ test.prop=$$hello
+ This was not the case in Ant 1.3
+
+Other changes:
+--------------
+
+* New tasks: ear, p4counter, record, cvspass, vsscheckin, vsscheckout,
+ typedef, sleep, mimemail, set of tasks for Continuus/Synergy, dependset,
+ condition, maudit, mmetrics, jpcoverage, jpcovreport, jpcovmerge
+
+* Ant now uses JAXP 1.1
+
+* rmic now supports Kaffe's and Weblogic's version of rmic.
+
+* new magic property build.rmic to chose the rmic implementation
+
+* <tar> will now add empty directories as well
+
+* you can now specify a description for <p4change>
+
+* <touch> can now work on <fileset>s
+
+* <uptodate> now supports a value attribute
+
+* <fail> supports nested text
+
+* <fixcrlf> won't override files that are already in the correct
+ format.
+
+* <sql> now supports REM comments as well as // and --
+
+* <jar> now has a nested <metainf> element following the same idea as
+ <war>'s <webinf>.
+
+* <pvcs> can now handle multiple projects.
+
+* <available> now has a "type" attribute you can use in conjunction
+ with the "file" attribute to specify whether the "file" you're
+ looking for is a file or a directory.
+
+* New <junit> formatter named "brief"
+
+* <ejbjar> changes
+ * Add support for Borland Application Server to the <ejbjar> task using
+ a <borland> nested element.
+ * Add support for iPlanet Application Server to the <ejbjar> task. Also
+ includes some iPlanet utility tasks
+ * Add support for JBoss Application Server to the <ejbjar> task.
+ * Add a naming attribute to control the naming scheme that
+ ejbjar uses to name the generated EJB jars.
+ * Weblogic element now sets the compiler class for EJB 2.0 beans
+ * <dtd> elements can be specified at the <ejbjar> level for building generic
+ beans
+ * <dtd> elements can now be URLs
+ * Allow the manifest to be specified for the generated jars
+ * The weblogic element now supprts an attribte noEJBC to skip the processing
+ of the jar by ejbc. The ejbc step will then occur at deployment
+ * weblogic will tell ejbc to use Jikes compiler if build.compiler is set to
+ jikes. It can be restored to the default, javac, operation if desired.
+
+* Allow the <sql> Delimiter to be set in the so that Oracle stored procs may be
+ entered
+
+* <execon> and <apply> can now optionally skip empty filesets.
+
+* <javadoc> has a new useexternalfile attribute that makes it use a
+ temporary file for sourcefile and package names - helps to defeat
+ command line length limitations.
+
+* Data types like <path> can now be defined inside of <target>s
+
+* you can now specify a classpath for <style> - the XSLZ processor
+ will be loaded from this path
+
+* added a force attribute to <style> to support dependencies that the
+ task cannot determine itself (dependency on parameters, not file
+ modification times for example)
+
+* added vmlauncher attribute to exec tasks. This defaults to true. If
+ it is set to false, the VM's ability to launch commands in bypassed
+ and the OS shell, either directly or through the auxillary antRun
+ scripts is used.
+
+* regexp mapper now supports the java.util.regex package of JDK 1.4.
+
+* New filesonly attribute for <zip> and friends to suppress directory
+ entries.
+
+* New update attribute for <zip> and friends - update an existing
+ archive instead of creating a new one.
+
+* <apply> and <execon> have been merged into a single task.
+
+* added vssver.scc to the default excludes
+
+* <available> has a new filepath attribute/nested element that allows
+ you top search for a file in a given path.
+
+* <junit> can now optionally set a property on test failure.
+
+* <taskdef> can now define several tasks at once, reading the
+ name/classname pairs from a property file or resource.
+
+* <unzip/unjar/unwar> and <untar> now have an overwrite attribute that
+ defaults to true. If set to false, files that are newer than the
+ files in the archive will not be replaced.
+
+* <patternset> and <fileset> now support nested <in/excludesfile>
+ elements - using these you can have more than one in/excludes file
+ per <patternset>.
+
+* Three new supported compilers for javac: kjc for kopi, gcj for the
+ gcc frontend and sj for Symantec's compiler.
+ In addition extJavac or the new fork attribute can be
+ used to run the JDK's javac in a JVM separate from Ant.
+
+* <fixrlf> can now with CR only line-ends and can use an arbitraty
+ between 2 and 80.
+
+* The .NET tasks have been adapted to the beta2 release of the framework.
+
+* <move> will now try to rename() files before copying them byte by
+ byte - only if filtering is of, of course.
+
+* <ant> and <antcall> tasks now support a new attribute inheritAll. When set to
+ false, only user properties are passed through to the target Ant instance.
+ This includes properties set on the command line and properties explicitly
+ passed
+
+* <javadoc> now skips off line links if the package list cannot be found.
+
+* <wlrun> now allows the security policy file to exist outside the weblogic
+ directory.
+
+* <java> task will set the Thread contextClassLoader under JDKs 1.2+ to the
+ classloader for the class being executed.
+
+* Introduce the concept of a TaskContainer - a task or element which can contain
+ Ant Tasks.
+
+* Add new tasks implementing the TaskContainer interface <parallel> and
+ <sequential> which allow parallel execution of tasks to be specified.
+
+* <depend> task will now take into account dependencies on jar files and class
+ files from a given classpath.
+
+* <jar> manifest entries may now be specified in the build file either
+ completely or to be merged with a manifest file.
+
+* <tstamp> task custom formats now support locales.
+
+* Added a listner which will forward events to Log4J. The log4j configuration
+ file should be in the directory from which Ant is run or passed as a system
+ property using a JVM argument.
+
+* Introduced the concept of <filtersets> to allow for more control in which
+ filters get applied in a <copy> or <move> operation.
+
+* Added nowarn attribute to javac and deprecated the Jikes-magic property
+ build.compiler.warnings.
+
+* The <depend> task cache format has changed and all dependency information is
+ now stored in a single file.
+
+Fixed bugs:
+-----------
+
+* Testcases have been made independent of current working directory.
+
+* Input ZIP-Files will be closed when using a <zipfileset>.
+
+* p4 tasks now don't fail if user, port or client have been omitted
+ (and this is acceptable for the context of the command).
+
+* <javah>'s outputfile attribute will be resolved as relative to the
+ projects basedir.
+
+* <antstructure> should create a valid DTD for propertyfile.operation.entry
+ and omit tasks it fails to load.
+
+* won't try to pass a -bootclasspath flag to javac 1.1 anymore
+
+* <style>'s style attribute no handles absolute paths correctly.
+
+* <delete includeemptydirs="true"> now deletes more than just the leaf
+ directories.
+
+* You can now specify a <fileset> for a directory that doesn't exist at
+ declaration time but will created before the fileset gets used for the
+ first time.
+
+* If the quiet attribute has been set, <delete> will handle <fileset>s
+ with non-existing directories gracefully.
+
+* Output written by testcases will now be captured by the <junit> task
+ and passed to the formatters.
+
+* Quote the -group parameter to Javadoc as per the specification
+
+* Initialise classes when loaded through the AntClassLoader - that is, run
+ static initializers
+
+* Implement getResource() and getResources() in AntClassLoader
+
+* Create the <ejbjar> weblogic command line as a set of arguments rather than
+ as a single line. Avoids problems with paths which contain spaces.
+
+* <ejbjar> now fails when the weblogic ejbc compiler reports an error.
+
+* Make the AntClassLoader load resources in the same order as it currently
+ loads classes.
+
+* Handle classpaths with spaces
+
+* Make sure XSLT processors close their output files in <style>.
+
+* perform proper uptodate check in <rmic> when compiling for IIOP.
+
+* <jjtree>'s uptodate test works even if outputdirectory is not the
+ parent dir of target
+
+* <copy> will remove target file (if it exists) before writing to it -
+ this avoids problems with links on filesystems that support them.
+
+* <ftp> now properly recurses remote directories.
+
+* <ftp> closes remote connection when it's done.
+
+* <junit> tries to include all necessary classes for the task itself
+ to the classpath when running in fork mode - doesn't work for JDK 1.1
+
+* <apply> and <execon> do now execute the command only once, if you
+ specify the parallel attribute - instead of once per fileset.
+
+* directory based tasks and fileset could miss some included files in
+ directories that have been excluded
+
+* <fixcrlf> failed for large files.
+
+* <move> removed files you tried to move to themselves.
+
+* <sql> task will not trty to print the result set unless the query succeeded.
+
+* Ant classloader will now ignore paths which are invalid relative to the
+ project base
+
+* <ejbjar> weblogic elements check for jar file changes has been fixed.
+ Previously some changes would not be included.
+
+* properties loaded from properties files are now resolved internally. This
+ removes the spurious warnings about usage of properties which have not been
+ set.
+
+* <jar> task and friends now process the JAR manifest to ensure it is valid.
+
+* The task finished event now includes any exception thrown by the task.
+
+* <java> task now supports a jvmVersion attribute so that if another JVM is
+ being used, Ant can determine which options to use for features such as the
+ VM memory limits
+
+
+Changes from Ant 1.2 to Ant 1.3
+===========================================
+
+Changes that could break older environments:
+--------------------------------------------
+
+* Ant doesn't search for the buildfile anymore, unless you use the new
+ -find argument.
+
+* <perforce> has been replaced by a number of new tasks.
+
+* <javac> is now implemented using a factory. This makes extending
+ javac to use a new compiler a lot easier but may break custom
+ versions of this task that rely on the old implementation.
+
+* The output generated by the xml formatter for <junit> has changed a
+ little, it doesn't append " sec" in the time attribute anymore.
+
+Other changes:
+--------------
+
+* A GUI Frontend: Antidote. This is currently in development. At this
+ time, this is not part of the Ant release, although the source is
+ included if you are interested.
+
+* New tasks: stylebook, propertyfile, depend, antlr, telnet, csc,
+ ilasm, apply, javah, several clearcase tasks, junitreport, sound
+
+* Added output attribute to <java>.
+
+* Added nested zipfileset element to <zip>
+
+* Changed <sql> so that printing is at the task level rather than
+ the statement level.
+
+* javadoc task will pass -d flag to any doclet if the destDir attribute is
+ given. If the doclet does not accept the -d flag then omit the destdir
+ attribute.
+
+* <cab> can work on non-Windows platforms with the help of libcabinet.
+ See http://trill.cis.fordham.edu/~barbacha/cabinet_library/.
+
+* <ftp> now supports passive mode.
+
+* New <mapper> data type that can be used to get influence on the
+ target files for some tasks like <copy> or enable new types of tasks
+ like <apply>.
+
+* <execon> provides more control over the command line now, the names
+ of the source files are no longer required to be at the end of the
+ command.
+
+* Style tasks will now support TraX compliant XSL processors if one is present
+ in your classpath.
+
+* Added a failonerror to the javac task. If set to false, the build will
+ continue even if there are compilation errors.
+
+* Added nested format elements to the tstamp task allowing additional time
+ formats to be defined for arbitrary properties.
+
+* Added classpath attribute and nested classpath element to <property>
+ to make the resource attribute more powerful.
+
+* ${} property expansion will now be performed on the patterns read
+ from files specified as includesfile or excludesfile attributes.
+
+* The <tar> and <untar> tasks now support GNU format for handling paths
+ which are greater than 100 characters in length. In addition the <tar>
+ task now supports nested filesets through which the file permissions
+ may be controlled.
+
+* wlrun, wlstop and ejbjar now support Weblogic 6.0
+
+* The MPasre task has been updated to work with MParse 2.0
+
+* The documentation has been significantly updated.
+
+
+Fixed bugs:
+-----------
+
+* <signjar> doesn't use deprectated methods anymore.
+
+* javadoc's failonerror attribute works again
+
+* javadoc's additionalparam attribute will now be split into separate
+ parameters (on spaces) to allow for more than one parameter.
+
+* Changed <sql> task so that printing result sets works on Oracle
+
+* Changes to ddcreator and ejbc helper to respect the descriptor hierarchy
+ keppgenerated in ejbc can now be turned off
+
+* ejbjar now correctly ignores <ejb-ref> elements in the deployment descriptor.
+ CMP files are included by parsing the weblogic deployment descriptor rather
+ than relying on the naming convention used in ant 1.2
+
+* ejbjar includes super classes and super interfaces into the generated ejb
+ jar files. The <support> nested element allows support classes to be
+ included in the EJB jar. The toplink element should now correctly locate
+ the toplink descriptor.
+
+* <vssget> now correctly deals with spaces in arguments
+
+* <jar> fails early if a given manifest file doesn't exist
+
+* <rmic> doesn't search for the _Skel file anymore when stubversion is
+ set to 1.2.
+
+* <rmic> uses the the same classpath to verify a class can be rmic'd
+ as it passes to the compiler.
+
+* org.apache.tools.mail.MailMessage (and therefore <mail>) can now
+ handle SMTP servers sending multi line responses.
+
+* nested <classpath> elements of <taskdef> now work for <taskdef>s not
+ nested into <target> as well.
+
+* <property> and <available> will search for the resource "foo" instead
+ of "/org/apache/tools/ant/taskdefs/foo" when given a relative resource
+ name foo.
+
+* Handle build files in directories whose name contained a "#" character
+
+* <junit> can now log to files whose name contains a comma as well.
+
+* The AntClassLoader now refers to the loader which loaded it, any
+ requests it does not handle itself. Previously these went to the
+ primordial loader.
+
+Changes from Ant 1.1 to Ant 1.2
+===============================
+
+Changes that could break older environments:
+--------------------------------------------
+
+* Semantics of <property> has changed again in the hope to be more
+intuitive. ${} expansion now happens at runtime and <property> tags
+living inside of targets only take effect if they are visited at
+runtime.
+
+As a side effect of this change, task's attributes get set at runtime
+not at parser time as well, which might change the results of
+<script>s or other custom tasks that reference other tasks by their id
+attribute.
+
+* copying of support files in <javac> has been removed - as well as
+the filtering attribute.
+
+* the <expand> and <keysubst> tasks have been removed.
+
+* the ignore and items attributes of directory based tasks have been removed.
+
+* the command line switches _not_ starting with - have been removed.
+
+* Path and EnumeratedAttribute have been moved from
+org.apache.tools.ant to org.apache.tools.ant.types.
+
+* the class attributes of <available>, <java>, <rmic> and <taskdef>
+have been removed.
+
+* the src attribute of <chmod> has been removed.
+
+* <patch> and <javadoc> have lost some of their attributes.
+
+* <java> and <cvs> have lost some undocumented attributes.
+
+* the Unix antRun script would search for command.sh in the directory
+it changed to and invoke this instead of command if present. This
+behavior has been dropped.
+
+* <ejbjar> task syntax has been changed significantly
+
+* <exec> is no longer implemented by org.apache.tool.ant.taskdefs.Exec.
+Custom tasks that rely on Project.createTask("exec") to return an
+instance of this class are going to fail.
+
+* nested <include> and <exclude> elements expect the value of their
+name attribute to be a single pattern, they don't accept multiple
+patterns anymore. Split them into multiple elements of the same type.
+
+* <delete dir="somedir" /> will now delete the directory itself as
+well as all included files. If you just want to clean out the
+directory and keep the empty one, use a nested fileset.
+
+Other changes:
+--------------
+
+* New tasks: antstructure, cab, execon, fail, ftp, genkey, jlink,
+junit, sql, javacc, jjtree, starteam, war, unwar, uptodate,
+native2ascii, copy, move, mparse.
+
+* copydir, copyfile, deltree and rename are now deprecated. They
+should be replaced with the new copy, delete and move tasks.
+
+* <java> uses a ClassLoader of its own in no-fork mode if a classpath is
+specified.
+
+* <style> will create the necessary target directories and reprocess
+all files if the stylesheet changes.
+
+* New data types fileset and patternset - expected to get a broader use.
+They, as well as PATH like structures, can now be defined on a global
+level and later be referenced by their id attribute.
+
+* You can specify environment variables to <exec>.
+
+* <get> can check whether a remote file is actually newer than a local
+copy before it starts a download (HTTP only).
+
+* Added a -logger option to allow the class which performs logging to be
+specified on the command line.
+
+* Added a -emacs option to tell the logger to leave out taskname adornments
+on log output.
+
+* <chmod> works on all files in parallel and supports multiple filesets.
+
+* <replace> can now use tokens and/or values that cross line boundaries.
+
+* build.compiler supports now jvc as well.
+
+* project specific help can now be obtained with the -projecthelp option.
+
+* Added a -debug option to make -verbose less verbose (and more useful)
+
+* Ant will now search for a file named build.xml in the parent directory
+and above (towards the root of the filesystem) if you didn't specify
+-buildfile and there is no build.xml in the current directory.
+
+* <echo> can now write to a file and accepts nested text.
+
+Fixed bugs:
+-----------
+
+* <chmod> didn't work when used as a directory based task.
+
+* Path, Available, Property didn't resolve relative filenames with
+respect to the Project's basedir.
+
+* Project didn't interpret the basedir attribute correctly in all
+cases.
+
+* Nested <src> in <javac> caused NullPointerException.
+
+* Corrupt Zip- and Jar-files ar now deleted if the task fails.
+
+* many more fixes we've forgotten to document here ...
+
+* The packagelistloc attribute of <javadoc>'s <link> child will be
+ resolved as a file (i.e. it is either absolute or relative to
+ basedir).
diff --git a/build/tools/jakarta-ant-1.5.1/bin/ant b/build/tools/jakarta-ant-1.5.1/bin/ant new file mode 100644 index 000000000..ee0ae5603 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/ant @@ -0,0 +1,192 @@ +#! /bin/sh
+
+# Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+# reserved.
+
+# load system-wide ant configuration
+if [ -f "/etc/ant.conf" ] ; then
+ . /etc/ant.conf
+fi
+
+# provide default values for people who don't use RPMs
+if [ -z "$rpm_mode" ] ; then
+ rpm_mode=false;
+fi
+if [ -z "$usejikes" ] ; then
+ usejikes=false;
+fi
+
+# load user ant configuration
+if [ -f "$HOME/.antrc" ] ; then
+ . "$HOME/.antrc"
+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" ] ; then
+ # try to find ANT
+ if [ -d /opt/ant ] ; then
+ ANT_HOME=/opt/ant
+ fi
+
+ if [ -d "${HOME}/opt/ant" ] ; then
+ ANT_HOME="${HOME}/opt/ant"
+ fi
+
+ ## resolve links - $0 may be a link to ant's home
+ PRG="$0"
+ progname=`basename "$0"`
+ saveddir=`pwd`
+
+ # need this for relative symlinks
+ cd `dirname "$PRG"`
+
+ 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"`/..
+
+ cd "$saveddir"
+
+ # make it fully qualified
+ ANT_HOME=`cd "$ANT_HOME" && 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"`
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# set ANT_LIB location
+ANT_LIB="${ANT_HOME}/lib"
+
+if [ -z "$JAVACMD" ] ; then
+ if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ else
+ JAVACMD=java
+ fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+ echo "Error: JAVA_HOME is not defined correctly."
+ echo " We cannot execute $JAVACMD"
+ exit 1
+fi
+
+if [ -n "$CLASSPATH" ] ; then
+ LOCALCLASSPATH="$CLASSPATH"
+fi
+
+# in rpm_mode get ant/optional/xml parser&api from JAVALIBDIR
+if $rpm_mode; then
+ JAVALIBDIR=/usr/share/java
+ for i in ant ant-optional jaxp_parser xml_apis
+ do
+ if [ -z "$LOCALCLASSPATH" ] ; then
+ LOCALCLASSPATH="$JAVALIBDIR/$i.jar"
+ else
+ LOCALCLASSPATH="$JAVALIBDIR/$i.jar":"$LOCALCLASSPATH"
+ fi
+ done
+
+ # in rpm mode ant/lib is in /usr/share/java/ant
+ ANT_LIB="${JAVALIBDIR}/ant"
+fi
+
+# add in the dependency .jar files in non-RPM mode (the default)
+for i in "${ANT_LIB}"/*.jar
+do
+ # if the directory is empty, then it will return the input string
+ # this is stupid, so case for it
+ if [ -f "$i" ] ; then
+ if [ -z "$LOCALCLASSPATH" ] ; then
+ LOCALCLASSPATH="$i"
+ else
+ LOCALCLASSPATH="$i":"$LOCALCLASSPATH"
+ fi
+ fi
+done
+
+if [ -n "$JAVA_HOME" ] ; then
+ 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
+
+ # OSX hack to make Ant work with jikes
+ if $darwin ; then
+ OSXHACK="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes"
+ if [ -d ${OSXHACK} ] ; then
+ for i in ${OSXHACK}/*.jar
+ do
+ JIKESPATH="$JIKESPATH:$i"
+ done
+ fi
+ fi
+else
+ echo "Warning: JAVA_HOME environment variable is not set."
+ echo " If build fails because sun.* classes could not be found"
+ echo " you will need to set the JAVA_HOME environment variable"
+ echo " to the installation directory of java."
+fi
+
+# Allow Jikes support (off by default)
+if $usejikes; then
+ ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+ ANT_HOME=`cygpath --path --windows "$ANT_HOME"`
+ JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+ CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+ LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
+ CYGHOME=`cygpath --path --windows "$HOME"`
+fi
+
+if [ -n "$CYGHOME" ]; then
+ if [ -n "$JIKESPATH" ]; then
+ JIKESPATH=`cygpath --path --windows "$JIKESPATH"`
+ "$JAVACMD" -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" -Dcygwin.user.home="$CYGHOME" $ANT_OPTS org.apache.tools.ant.Main $ANT_ARGS "$@"
+ else
+ "$JAVACMD" -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" $ANT_OPTS org.apache.tools.ant.Main $ANT_ARGS "$@"
+ fi
+else
+ if [ -n "$JIKESPATH" ]; then
+ "$JAVACMD" -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" $ANT_OPTS org.apache.tools.ant.Main $ANT_ARGS "$@"
+ else
+ "$JAVACMD" -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" $ANT_OPTS org.apache.tools.ant.Main $ANT_ARGS "$@"
+ fi
+fi
+
diff --git a/build/tools/jakarta-ant-1.5.1/bin/ant.bat b/build/tools/jakarta-ant-1.5.1/bin/ant.bat new file mode 100644 index 000000000..c3c371698 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/ant.bat @@ -0,0 +1,95 @@ +@echo off
+
+REM Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+REM reserved.
+
+if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"
+
+if "%OS%"=="Windows_NT" @setlocal
+
+rem %~dp0 is expanded pathname of the current script under NT
+set DEFAULT_ANT_HOME=%~dp0..
+
+if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%
+set DEFAULT_ANT_HOME=
+
+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
+set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
+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
+
+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%" goto checkJava
+
+rem check for ant in Program Files on system drive
+if not exist "%SystemDrive%\Program Files\ant" goto checkSystemDrive
+set ANT_HOME=%SystemDrive%\Program Files\ant
+goto checkJava
+
+:checkSystemDrive
+rem check for ant in root directory of system drive
+if not exist %SystemDrive%\ant\nul 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\nul 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 LOCALCLASSPATH=%CLASSPATH%
+for %%i in ("%ANT_HOME%\lib\*.jar") do call "%ANT_HOME%\bin\lcp.bat" %%i
+
+if "%JAVA_HOME%" == "" goto noJavaHome
+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
+set _JAVACMD=%JAVA_HOME%\bin\java.exe
+if exist "%JAVA_HOME%\lib\tools.jar" call "%ANT_HOME%\bin\lcp.bat" "%JAVA_HOME%\lib\tools.jar"
+if exist "%JAVA_HOME%\lib\classes.zip" call "%ANT_HOME%\bin\lcp.bat" "%JAVA_HOME%\lib\classes.zip"
+goto checkJikes
+
+:noJavaHome
+set _JAVACMD=java.exe
+echo.
+echo Warning: JAVA_HOME environment variable is not set.
+echo If build fails because sun.* classes could not be found
+echo you will need to set the JAVA_HOME environment variable
+echo to the installation directory of java.
+echo.
+
+:checkJikes
+if not "%JIKESPATH%"=="" goto runAntWithJikes
+
+:runAnt
+"%_JAVACMD%" -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" %ANT_OPTS% org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS%
+goto end
+
+:runAntWithJikes
+"%_JAVACMD%" -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" %ANT_OPTS% org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS%
+goto end
+
+:end
+set LOCALCLASSPATH=
+set _JAVACMD=
+set ANT_CMD_LINE_ARGS=
+
+if "%OS%"=="Windows_NT" @endlocal
+
+:mainEnd
+if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"
+
diff --git a/build/tools/jakarta-ant-1.5.1/bin/antRun b/build/tools/jakarta-ant-1.5.1/bin/antRun new file mode 100644 index 000000000..cba56f16d --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/antRun @@ -0,0 +1,12 @@ +#! /bin/sh
+
+# Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+# reserved.
+
+# Args: DIR command
+cd "$1"
+CMD="$2"
+shift
+shift
+
+exec "$CMD" "$@"
diff --git a/build/tools/jakarta-ant-1.5.1/bin/antRun.bat b/build/tools/jakarta-ant-1.5.1/bin/antRun.bat new file mode 100644 index 000000000..e8125f660 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/antRun.bat @@ -0,0 +1,31 @@ +@echo off
+
+REM Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+REM reserved.
+
+if "%OS%"=="Windows_NT" @setlocal
+
+if ""%1""=="""" goto runCommand
+
+rem Change drive and directory to %1
+if "%OS%"=="Windows_NT" cd /d ""%1""
+if not "%OS%"=="Windows_NT" cd ""%1""
+shift
+
+rem Slurp the command line arguments. This loop allows for an unlimited number
+rem of agruments (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
+
diff --git a/build/tools/jakarta-ant-1.5.1/bin/antRun.pl b/build/tools/jakarta-ant-1.5.1/bin/antRun.pl new file mode 100644 index 000000000..1851b50ce --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/antRun.pl @@ -0,0 +1,51 @@ +#!/usr/bin/perl
+#######################################################################
+#
+# 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
+# last modified: 2001-11-13
+# 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;
+}
diff --git a/build/tools/jakarta-ant-1.5.1/bin/complete-ant-cmd.pl b/build/tools/jakarta-ant-1.5.1/bin/complete-ant-cmd.pl new file mode 100644 index 000000000..58d7b2367 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/complete-ant-cmd.pl @@ -0,0 +1,102 @@ +#!/usr/bin/perl
+#
+# Copyright (c) 2001 The Apache Software Foundation. All rights
+# reserved.
+#
+# 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;
+
+}
+
+
+
diff --git a/build/tools/jakarta-ant-1.5.1/bin/lcp.bat b/build/tools/jakarta-ant-1.5.1/bin/lcp.bat new file mode 100644 index 000000000..9b1a9b5a0 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/lcp.bat @@ -0,0 +1,16 @@ +REM Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+REM reserved.
+
+set _CLASSPATHCOMPONENT=%1
+if ""%1""=="""" goto gotAllArgs
+shift
+
+:argCheck
+if ""%1""=="""" goto gotAllArgs
+set _CLASSPATHCOMPONENT=%_CLASSPATHCOMPONENT% %1
+shift
+goto argCheck
+
+:gotAllArgs
+set LOCALCLASSPATH=%_CLASSPATHCOMPONENT%;%LOCALCLASSPATH%
+
diff --git a/build/tools/jakarta-ant-1.5.1/bin/runant.pl b/build/tools/jakarta-ant-1.5.1/bin/runant.pl new file mode 100644 index 000000000..a8c0c08cf --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/runant.pl @@ -0,0 +1,162 @@ +#!/usr/bin/perl
+#
+# Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+# reserved.
+#
+#######################################################################
+#
+# 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
+# last modified: 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=0;
+
+#######################################################################
+#
+# 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;
+}
+
+#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=$ENV{CLASSPATH};
+if ($localpath eq "")
+ {
+ print "warning: no initial classpath\n" if ($debug);
+ $localpath="";
+ }
+if ($onnetware == 1)
+{
+# avoid building a command line bigger than 512 characters - make localpath
+# only include the "extra" stuff, and add in the system classpath as an expanded
+# variable.
+ $localpath="";
+}
+
+#add jar files. I am sure there is a perl one liner to do this.
+my $jarpattern="$HOME/lib/*.jar";
+my @jarfiles =glob($jarpattern);
+print "jarfiles=@jarfiles\n" if ($debug);
+my $jar;
+foreach $jar (@jarfiles )
+ {
+ $localpath.="$s$jar";
+ }
+
+#if Java home is defined, look for tools.jar & classes.zip and add to classpath
+my $JAVA_HOME = $ENV{JAVA_HOME};
+if ($JAVA_HOME ne "")
+ {
+ my $tools="$JAVA_HOME/lib/tools.jar";
+ if (-e "$tools")
+ {
+ $localpath .= "$s$tools";
+ }
+ my $classes="$JAVA_HOME/lib/classes.zip";
+ if (-e $classes)
+ {
+ $localpath .= "$s$classes";
+ }
+ }
+else
+ {
+ print "\n\nWarning: JAVA_HOME environment variable is not set.\n".
+ "If the build fails because sun.* classes could not be found\n".
+ "you will need to set the JAVA_HOME environment variable\n".
+ "to the installation directory of java\n";
+ }
+
+#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;
+if ($onnetware == 1)
+{
+# make classpath literally $CLASSPATH; and then the contents of $localpath
+# this is to avoid pushing us over the 512 character limit
+# even skip the ; - that is already in $localpath
+ push @ARGS, "-classpath", "\$CLASSPATH$localpath";
+}
+else
+{
+ push @ARGS, "-classpath", "$localpath";
+}
+push @ARGS, "-Dant.home=$HOME";
+push @ARGS, @ANT_OPTS;
+push @ARGS, "org.apache.tools.ant.Main", @ANT_ARGS;
+push @ARGS, @ARGV;
+
+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;
+ }
diff --git a/build/tools/jakarta-ant-1.5.1/bin/runant.py b/build/tools/jakarta-ant-1.5.1/bin/runant.py new file mode 100644 index 000000000..f014fa6d9 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/bin/runant.py @@ -0,0 +1,99 @@ +#!/usr/bin/python
+"""
+
+ 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
+
+ Copyright (c) 2001 The Apache Software Foundation. All rights
+ reserved.
+
+ created: 2001-04-11
+ author: Pierre Dittgen pierre.dittgen@criltelecom.com
+
+ Assumptions:
+
+ - the "java" executable/script is on the command path
+ - ANT_HOME has been set
+"""
+import os, os.path, string, sys
+
+# Change it to 1 to get extra debug information
+debug = 0
+
+#######################################################################
+#
+# check to make sure environment is setup
+#
+if not os.environ.has_key('ANT_HOME'):
+ print '\n\nANT_HOME *MUST* be set!\n\n'
+ sys.exit(1)
+else:
+ ANT_HOME = os.environ['ANT_HOME']
+
+if not os.environ.has_key('JAVACMD'):
+ JAVACMD = 'java'
+else:
+ JAVACMD = os.environ['JAVACMD']
+
+# Sets the separator char for CLASSPATH
+SEPARATOR = ':'
+if os.name == 'dos' or os.name == 'nt':
+ SEPARATOR = ';'
+
+# Build up standard classpath
+localpath = ''
+if os.environ.has_key('CLASSPATH'):
+ localpath = os.environ['CLASSPATH']
+else:
+ if debug:
+ print 'Warning: no initial classpath\n'
+
+# Add jar files
+LIBDIR = os.path.join(ANT_HOME, 'lib')
+jarfiles = []
+for file in os.listdir(LIBDIR):
+ if file[-4:] == '.jar':
+ jarfiles.append(os.path.join(LIBDIR,file))
+if debug:
+ print 'Jar files:'
+ for jar in jarfiles:
+ print jar
+localpath = localpath + SEPARATOR + string.join(jarfiles, SEPARATOR)
+
+# If JAVA_HOME is defined, look for tools.jar & classes.zip
+# and add to classpath
+if os.environ.has_key('JAVA_HOME') and os.environ['JAVA_HOME'] != '':
+ JAVA_HOME = os.environ['JAVA_HOME']
+ TOOLS = os.path.join(JAVA_HOME, os.path.join('lib', 'tools.jar'))
+ if os.path.exists(TOOLS):
+ localpath = localpath + SEPARATOR + TOOLS
+ CLASSES = os.path.join(JAVA_HOME, os.path.join('lib', 'classes.zip'))
+ if os.path.exists(CLASSES):
+ localpath = localpath + SEPARATOR + CLASSES
+else:
+ print '\n\nWarning: JAVA_HOME environment variable is not set.\n', \
+ 'If the build fails because sun.* classes could not be found\n', \
+ 'you will need to set the JAVA_HOME environment variable\n', \
+ 'to the installation directory of java\n'
+
+# Jikes
+ANT_OPTS = []
+if os.environ.has_key('ANT_OPTS'):
+ ANT_OPTS = string.split(os.environ['ANT_OPTS'])
+if os.environ.has_key('JIKESPATH'):
+ ANT_OPTS.append('-Djikes.class.path=' + os.environ['JIKESPATH'])
+
+# Builds the commandline
+cmdline = '%s -classpath %s -Dant.home=%s %s org.apache.tools.ant.Main %s' \
+ % (JAVACMD, localpath, ANT_HOME, string.join(ANT_OPTS,' '), \
+ string.join(sys.argv[1:], ' '))
+
+if debug:
+ print '\n%s\n\n' % (cmdline)
+
+# Run the biniou!
+os.system(cmdline)
diff --git a/build/tools/jakarta-ant-1.5.1/etc/changelog.xsl b/build/tools/jakarta-ant-1.5.1/etc/changelog.xsl new file mode 100644 index 000000000..46828ccbd --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/changelog.xsl @@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> + +<xsl:stylesheet + xmlns:xsl='http://www.w3.org/1999/XSL/Transform' + version='1.0'> + +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> + <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://jakarta.apache.org/ant/">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> diff --git a/build/tools/jakarta-ant-1.5.1/etc/checkstyle-frames.xsl b/build/tools/jakarta-ant-1.5.1/etc/checkstyle-frames.xsl new file mode 100644 index 000000000..104af5c7e --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/checkstyle-frames.xsl @@ -0,0 +1,324 @@ +<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.xslt.extensions.Redirect" + extension-element-prefixes="redirect"> + +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> + + <xsl:output method="html" indent="yes" encoding="US-ASCII"/> + <xsl:decimal-format decimal-separator="." grouping-separator="," /> + + <xsl:param name="output.dir" 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"/> + </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://jakarta.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; + } + .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> + + <!-- + 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" mode="all.classes"> + <xsl:sort select="@name"/> + </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" mode="filelist"> + <xsl:sort select="@name"/> + </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="@name"/><xsl:text>.html</xsl:text> + </xsl:attribute> + <xsl:value-of select="@name"/> + </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="@name"/><xsl:text>.html</xsl:text> + </xsl:attribute> + <xsl:value-of select="@name"/> + </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"/> + <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> + + <xsl:template match="file"> + <redirect:write file="{$output.dir}/files/{@name}.html"> + <html> + <head> + <link rel="stylesheet" type="text/css"> + <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="@name"/></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="@name"/></h3> + <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%"> + <tr> + <th>Error Description</th> + <th>Line</th> + </tr> + <xsl:for-each select="error"> + <tr> + <xsl:call-template name="alternated-row"/> + <td><xsl:value-of select="@message"/></td> + <td><xsl:value-of select="@line"/></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)"/> + <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%"> + <tr> + <th>Files</th> + <th>Errors</th> + </tr> + <tr> + <xsl:call-template name="alternated-row"/> + <td><xsl:value-of select="$fileCount"/></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">a</xsl:if> + <xsl:if test="position() mod 2 = 0">b</xsl:if> + </xsl:attribute> + </xsl:template> +</xsl:stylesheet> + diff --git a/build/tools/jakarta-ant-1.5.1/etc/coverage-frames.xsl b/build/tools/jakarta-ant-1.5.1/etc/coverage-frames.xsl new file mode 100644 index 000000000..3881f1aaf --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/coverage-frames.xsl @@ -0,0 +1,533 @@ +<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.xslt.extensions.Redirect" + extension-element-prefixes="redirect"> +<xsl:output method="html" indent="yes"/> +<xsl:decimal-format decimal-separator="." grouping-separator="," /> +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2001-2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> + +<!-- + + 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"> + <table width="100%"> + <tr><td><hr noshade="yes" size="1"/></td></tr> + <tr><td> + <div align="center"><font color="#525D76" size="-1"><em> + Copyright © 1999-2001, Apache Software Foundation + </em></font></div> + </td></tr> + </table> +</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> + + diff --git a/build/tools/jakarta-ant-1.5.1/etc/jdepend-frames.xsl b/build/tools/jakarta-ant-1.5.1/etc/jdepend-frames.xsl new file mode 100644 index 000000000..5c73a11d4 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/jdepend-frames.xsl @@ -0,0 +1,522 @@ +<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.xslt.extensions.Redirect" + extension-element-prefixes="redirect"> +<xsl:output method="html" indent="yes" encoding="US-ASCII"/> +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> +<!-- + + 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> diff --git a/build/tools/jakarta-ant-1.5.1/etc/jdepend.xsl b/build/tools/jakarta-ant-1.5.1/etc/jdepend.xsl new file mode 100644 index 000000000..64d981f52 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/jdepend.xsl @@ -0,0 +1,312 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> + +<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> diff --git a/build/tools/jakarta-ant-1.5.1/etc/junit-frames.xsl b/build/tools/jakarta-ant-1.5.1/etc/junit-frames.xsl new file mode 100644 index 000000000..18ac51ef2 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/junit-frames.xsl @@ -0,0 +1,741 @@ +<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.xslt.extensions.Redirect" + extension-element-prefixes="redirect"> +<xsl:output method="html" indent="yes" encoding="US-ASCII"/> +<xsl:decimal-format decimal-separator="." grouping-separator=","/> +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2001-2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> + +<!-- + + Sample stylesheet to be used with An JUnitReport output. + + It creates a set of HTML files a la javadoc where you can browse easily + through all packages and classes. + + @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/> + @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/> + +--> +<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: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.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> + </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"/></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"/> + </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"/></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> + </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://jakarta.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> + </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> + </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:choose> + <xsl:when test="contains($string,"'")"> + <xsl:value-of select="substring-before($string,"'")"/>\'<xsl:call-template name="JS-escape"> + <xsl:with-param name="string" select="substring-after($string,"'")"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($string,'\')"> + <xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape"> + <xsl:with-param name="string" select="substring-after($string,'\')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$string"/> + </xsl:otherwise> + </xsl:choose> +</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:choose> + <xsl:when test="contains($word,'
')"> + <xsl:value-of select="substring-before($word,'
')"/> + <br/> + <xsl:call-template name="br-replace"> + <xsl:with-param name="word" select="substring-after($word,'
')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$word"/> + </xsl:otherwise> + </xsl:choose> +</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> + diff --git a/build/tools/jakarta-ant-1.5.1/etc/junit-noframes.xsl b/build/tools/jakarta-ant-1.5.1/etc/junit-noframes.xsl new file mode 100644 index 000000000..7364e493c --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/junit-noframes.xsl @@ -0,0 +1,519 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> +<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="," /> +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2001-2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> + +<!-- + + Sample stylesheet to be used with An JUnitReport output. + + It creates a non-framed report that can be useful to send via + e-mail or such. + + @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/> + @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/> + +--> +<xsl:template match="testsuites"> + <html> + <head> + <title>Unit Test Results</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.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> + </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>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://jakarta.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> + </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> + </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:choose> + <xsl:when test="contains($string,"'")"> + <xsl:value-of select="substring-before($string,"'")"/>\'<xsl:call-template name="JS-escape"> + <xsl:with-param name="string" select="substring-after($string,"'")"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($string,'\')"> + <xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape"> + <xsl:with-param name="string" select="substring-after($string,'\')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$string"/> + </xsl:otherwise> + </xsl:choose> +</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:choose> + <xsl:when test="contains($word,'
')"> + <xsl:value-of select="substring-before($word,'
')"/> + <br/> + <xsl:call-template name="br-replace"> + <xsl:with-param name="word" select="substring-after($word,'
')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$word"/> + </xsl:otherwise> + </xsl:choose> +</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> + diff --git a/build/tools/jakarta-ant-1.5.1/etc/log.xsl b/build/tools/jakarta-ant-1.5.1/etc/log.xsl new file mode 100644 index 000000000..744736c06 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/log.xsl @@ -0,0 +1,247 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> +<xsl:output method="html" indent="yes" encoding="US-ASCII"/> +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2000-2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> + +<!-- + + 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="htp://jakarta.apache.org/ant">Jakarta 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"/> + + <!-- FOOTER --> + <table width="100%"> + <tr><td><hr noshade="yes" size="1"/></td></tr> + <tr><td> + <div align="center"><font color="#525D76" size="-1"><em> + Copyright © 2000-2002, Apache Software Foundation + </em></font></div> + </td></tr> + </table> + </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> diff --git a/build/tools/jakarta-ant-1.5.1/etc/maudit-frames.xsl b/build/tools/jakarta-ant-1.5.1/etc/maudit-frames.xsl new file mode 100644 index 000000000..476f65e7a --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/maudit-frames.xsl @@ -0,0 +1,547 @@ +<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.xslt.extensions.Redirect" + extension-element-prefixes="redirect"> +<xsl:output method="html" indent="yes" encoding="US-ASCII"/> +<xsl:decimal-format decimal-separator="." grouping-separator="," /> +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2001-2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> +<!-- + + 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"> + <table width="100%"> + <tr><td><hr noshade="yes" size="1"/></td></tr> + <tr><td> + <div align="center"><font color="#525D76" size="-1"><em> + Copyright © 1999-2001, Apache Software Foundation + </em></font></div> + </td></tr> + </table> +</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> + diff --git a/build/tools/jakarta-ant-1.5.1/etc/mmetrics-frames.xsl b/build/tools/jakarta-ant-1.5.1/etc/mmetrics-frames.xsl new file mode 100644 index 000000000..001112926 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/mmetrics-frames.xsl @@ -0,0 +1,1070 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:lxslt="http://xml.apache.org/xslt" + xmlns:xalan="http://xml.apache.org/xalan" + xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect" + exclude-result-prefixes="xalan" + extension-element-prefixes="redirect"> +<xsl:output method="html" indent="yes" encoding="US-ASCII"/> +<xsl:decimal-format decimal-separator="." grouping-separator="," /> +<!-- + The Apache Software License, Version 1.1 + + Copyright (c) 2001-2002 The Apache Software Foundation. All rights + reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The end-user documentation included with the redistribution, if + any, must include the following acknowlegement: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowlegement may appear in the software itself, + if and wherever such third-party acknowlegements normally appear. + + 4. The names "The Jakarta Project", "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 apache@apache.org. + + 5. Products derived from this software may not be called "Apache" + nor may "Apache" appear in their names without prior written + permission of the Apache Group. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + ==================================================================== + + This software consists of voluntary contributions made by many + individuals on behalf of the Apache Software Foundation. For more + information on the Apache Software Foundation, please see + <http://www.apache.org/>. + --> +<!-- + @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/> + --> +<xsl:param name="output.dir" select="'.'"/> + +<!-- default max value for the metrics --> +<xsl:param name="vg.max" select="10"/> +<xsl:param name="loc.max" select="1000"/> +<xsl:param name="dit.max" select="10"/> +<xsl:param name="noa.max" select="250"/> +<xsl:param name="nrm.max" select="50"/> +<xsl:param name="nlm.max" select="250"/> +<xsl:param name="wmc.max" select="250"/> +<xsl:param name="rfc.max" select="50"/> +<xsl:param name="dac.max" select="10"/> +<xsl:param name="fanout.max" select="10"/> +<xsl:param name="cbo.max" select="15"/> +<xsl:param name="lcom.max" select="10"/> +<xsl:param name="nocl.max" select="10"/> + + +<!-- create a tree fragment to speed up processing --> +<xsl:variable name="doctree.var"> + <xsl:element name="classes"> + <xsl:for-each select=".//class"> + <xsl:element name="class"> + <xsl:attribute name="package"> + <xsl:value-of select="(ancestor::package)[last()]/@name"/> + </xsl:attribute> + <xsl:copy-of select="@*"/> + <xsl:attribute name="name"> + <xsl:apply-templates select="." mode="class.name"/> + </xsl:attribute> + <xsl:copy-of select="method"/> + </xsl:element> + </xsl:for-each> + </xsl:element> +</xsl:variable> + +<xsl:variable name="doctree" select="xalan:nodeset($doctree.var)"/> + +<xsl:template match="metrics"> + + <!-- 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> + + <redirect:write file="{$output.dir}/metrics-reference.html"> + <xsl:call-template name="metrics-reference.html"/> + </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"/> +</xsl:template> + + +<xsl:template match="package"> + <xsl:variable name="package.name" select="@name"/> + <xsl:variable name="package.dir"> + <xsl:if test="not($package.name = 'unnamed package')"><xsl:value-of select="translate($package.name,'.','/')"/></xsl:if> + <xsl:if test="$package.name = 'unnamed package'">.</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 --> + <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten --> + <xsl:for-each select="$doctree/classes/class[@package = current()/@name]"> + <!--Processing <xsl:value-of select="$class.name"/><xsl:text> </xsl:text> --> + <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html"> + <xsl:apply-templates select="." mode="class.details"/> + </redirect:write> + </xsl:for-each> +</xsl:template> + +<!-- little trick to compute the classname for inner and non inner classes --> +<!-- this is all in one line to avoid CRLF in the name --> +<xsl:template match="class" mode="class.name"> + <xsl:if test="parent::class"><xsl:apply-templates select="parent::class" mode="class.name"/>.<xsl:value-of select="@name"/></xsl:if><xsl:if test="not(parent::class)"><xsl:value-of select="@name"/></xsl:if> +</xsl:template> + + +<xsl:template name="index.html"> +<HTML> + <HEAD><TITLE>Metrics 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="metrics-reference.html"> +<html> +<head> +<link title="Style" type="text/css" rel="stylesheet" href="stylesheet.css"/> +</head> +<body style="text-align:justify;"> +<h2>Metrics Reference</h2> +<a href="#V(G)">V(G)</a> | +<a href="#LOC">LOC</a> | +<a href="#DIT">DIT</a> | +<a href="#NOA">NOA</a> | +<a href="#NRM">NRM</a> | +<a href="#NLM">NLM</a> | +<a href="#WMC">WMC</a> | +<a href="#RFC">RFC</a> | +<a href="#DAC">DAC</a> | +<a href="#FANOUT">FANOUT</a> | +<a href="#CBO">CBO</a> | +<a href="#LCOM">LCOM</a> | +<a href="#NOC">NOC</a> + +<a name="V(G)"/> +<h3>Cyclomatic Complexity - V(G)</h3> +This metric was introduced in the 1970s to measure the amount of control +flow complexity or branching complexity in a module such as a +subroutine. It gives the number of paths that may be taken through the +code, and was initially developed to give some measure of the cost of +producing a test case for the module by executing each path. +<p/> +Methods with a high cyclomatic complexity tend to be more difficult to +understand and maintain. In general the more complex the methods of an +application, the more difficult it will be to test it, and this will adversely +affect its reliability. +<p/> +V(G) is a measure of the control flow complexity of a method or +constructor. It counts the number of branches in the body of the method, +defined as: +<ul> +<li>while statements;</li> +<li>if statements;</li> +<li>for statements.</li> +</ul> + +The metric can also be configured to count each case of a switch +statement as well. + +<a name="LOC"/> +<h3>Lines of Code - LOC</h3> + +This is perhaps the simplest of all the metrics to define and compute. +Counting lines has a long history as a software metric dating from before +the rise of structured programming, and it is still in widespread use today. +The size of a method affects the ease with which it can be understood, its +reusability and its maintainability. There are a variety of ways that the size +can be calculated. These include counting all the lines of code, the number +of statements, the blank lines of code, the lines of commentary, and the +lines consisting only of syntax such as block delimiters. +<p/> +This metric can also be used for sizing other constructs as well, for +example, the overall size of a Java class or package can be measured by +counting the number of source lines it consists of. +<p/> +LOC can be used to determine the size of a compilation unit (source file), +class or interface, method, constructor, or field. It can be configured to +ignore: +<ul> +<li>blank lines;</li> +<li>lines consisting only of comments;</li> +<li>lines consisting only of opening and closing braces.</li> +</ul> + +<a name="DIT"/> +<h3>Depth of Inheritance Hierarchy - DIT</h3> + +This metric calculates how far down the inheritance hierarchy a class is +declared. In Java all classes have java.lang.Object as their ultimate +superclass, which is defined to have a depth of 1. So a class that +immediately extends java.lang.Object has a metric value of 2; any of its +subclasses will have a value of 3, and so on. +<p/> +A class that is deep within the tree inherits more methods and state +variables, thereby increasing its complexity and making it difficult to +predict its behavior. It can be harder to understand a system with many +inheritance layers. +<p/> +DIT is defined for classes and interfaces: +<ul> +<li>all interface types have a depth of 1;</li> +<li>the class java.lang.Object has a depth of 1;</li> +<li>all other classes have a depth of 1 + the depth of their super class.</li> +</ul> + +<a name="NOA"/> +<h3>Number of Attributes - NOA</h3> + +The number of distinct state variables in a class serves as one measure of +its complexity. The more state a class represents the more difficult it is to +maintain invariants for it. It also hinders comprehensibility and reuse. +<p/> +In Java, state can be exposed to subclasses through protected fields, which +entails that the subclass also be aware of and maintain any invariants. This +interference with the class's data encapsulation can be a source of defects +and hidden dependencies between the state variables. +<p/> +NOA is defined for classes and interfaces. It counts the number of fields +declared in the class or interface. + +<a name="NRM"/> +<h3>Number of Remote Methods - NRM</h3> + +NRM is defined for classes. A remote method call is defined as an +invocation of a method that is not declared in any of: +<ul> +<li>the class itself;</li> +<li>a class or interface that the class extends or implements;</li> +<li>a class or method that extends the class.</li> +</ul> + +The value is the count of all the remote method calls in all of the methods +and constructors of the class. + +<a name="NLM"/> +<h3>Number of Local Methods - NLM</h3> + +NLM is defined for classes and interfaces. A local method is defined as a +method that is declared in the class or interface. NLM can be configured to +include the local methods of all of the class's superclasses. Methods with +public, protected, package and private visibility can be independently +counted by setting configuration parameters. + +<a name="WMC"/> +<h3>Weighted Methods per Class - WMC</h3> + +If the number of methods in a class can be determined during the design +and modeling phase of a project, it can be used as a predictor of how +much time and effort is needed to develop, debug and maintain it. This +metric can be further refined by incorporating a weighting for the +complexity of each method. The usual weighting is given by the cyclomatic +complexity of the method. +<p/> +The subclasses of a class inherit all of its public and protected methods, +and possibly its package methods as well, so the number of methods a +class has directly impacts the complexity of its subclasses. Classes with +large numbers of methods are often specific to a particular application, +reducing the ability to reuse them. +<p/> +The definition of WMC is based upon NLM, and it provides the same +configuration parameters for counting inherited methods and of varying +visibility. The main difference is that NLM always counts each method as 1, +whereas WMC will weight each method. There are two weighting schemes: +<ul> +<li>V(G) the cyclomatic complexity of the method is used as its weight. + Methods from class files are given a V(G) of 1.</li> +<li>the arity, or the number of parameters of the method are used to + determine the weight.</li> +</ul> + +<a name="RFC"/> +<h3>Response For Class - RFC</h3> + +The response set of a class is the set of all methods that can be invoked as +a result of a message sent to an object of the class. This includes methods +in the class's inheritance hierarchy and methods that can be invoked on +other objects. The Response For Class metric is defined to be size of the +response set for the class. A class which provides a larger response set is +considered to be more complex than one with a smaller response set. +<p/> +One reason for this is that if a method call on a class can result in a large +number of different method calls on the target and other classes, then it +can be harder to test the behavior of the class and debug problems. It will +typically require a deeper understanding of the potential interactions that +objects of the class can have with the rest of the system. +<p/> +RFC is defined as the sum of NLM and NRM for the class. The local methods +include all of the public, protected, package and private methods, but not +methods declared only in a superclass. + +<a name="DAC"/> +<h3>Data Abstraction Coupling - DAC</h3> + +DAC is defined for classes and interfaces. It counts the number of reference +types that are used in the field declarations of the class or interface. The +component types of arrays are also counted. Any field with a type that is +either a supertype or a subtype of the class is not counted. + +<a name="FANOUT"/> +<h3>Fan Out - FANOUT</h3> + +FANOUT is defined for classes and interfaces, constructors and methods. It +counts the number of reference types that are used in: +<ul> +<li>field declarations;</li> +<li>formal parameters and return types;</li> +<li>throws declarations;</li> +<li>local variables.</li> +</ul> + +The component types of arrays are also counted. Any type that is either a +supertype or a subtype of the class is not counted. + +<a name="CBO"/> +<h3>Coupling Between Objects - CBO</h3> + +When one object or class uses another object or class they are said to be +coupled. One major source of coupling is that between a superclass and a +subclass. A coupling is also introduced when a method or field in another +class is accessed, or when an object of another class is passed into or out +of a method invocation. Coupling Between Objects is a measure of the +non-inheritance coupling between two objects. +<p/> +A high value of coupling reduces the modularity of the class and makes +reuse more difficult. The more independent a class is the more likely it is +that it will be possible to reuse it in another part of the system. When a +class is coupled to another class it becomes sensitive to changes in that +class, thereby making maintenance for difficult. In addition, a class that is +overly dependent on other classes can be difficult to understand and test in +isolation. +<p/> +CBO is defined for classes and interfaces, constructors and methods. It +counts the number of reference types that are used in: +<ul> +<li>field declarations</li> +<li>formal parameters and return types</li> +<li>throws declarations</li> +<li>local variables</li> +</ul> + +It also counts: +<ul> +<li>types from which field and method selections are made</li> +</ul> + +The component types of arrays are also counted. Any type that is either a +supertype or a subtype of the class is not counted. + +<a name="LCOM"/> +<h3>Lack of Cohesion Of Methods - LCOM</h3> + +The cohesion of a class is the degree to which its methods are related to +each other. It is determined by examining the pattern of state variable +accesses within the set of methods. If all the methods access the same state +variables then they have high cohesion; if they access disjoint sets of +variables then the cohesion is low. An extreme example of low cohesion +would be if none of the methods accessed any of the state variables. + +If a class exhibits low method cohesion it indicates that the design of the +class has probably been partitioned incorrectly, and could benefit by being +split into more classes with individually higher cohesion. On the other +hand, a high value of cohesion (a low lack of cohesion) implies that the +class is well designed. A cohesive class will tend to provide a high degree +of encapsulation, whereas a lack of cohesion decreases encapsulation and +increases complexity. +<p/> +Another form of cohesion that is useful for Java programs is cohesion +between nested and enclosing classes. A nested class that has very low +cohesion with its enclosing class would probably better designed as a peer +class rather than a nested class. +<p/> +LCOM is defined for classes. Operationally, LCOM takes each pair of +methods in the class and determines the set of fields they each access. If +they have disjoint sets of field accesses increase the count P by one. If they +share at least one field access then increase Q by one. After considering +each pair of methods, +LCOM = (P > Q) ? (P - Q) : 0 +<p/> +Indirect access to fields via local methods can be considered by setting a +metric configuration parameter. + +<a name="NOC"/> +<h3>Number Of Classes - NOC</h3> + +The overall size of the system can be estimated by calculating the number +of classes it contains. A large system with more classes is more complex +than a smaller one because the number of potential interactions between +objects is higher. This reduces the comprehensibility of the system which +in turn makes it harder to test, debug and maintain. +<p/> +If the number of classes in the system can be projected during the initial +design phase of the project it can serve as a base for estimating the total +effort and cost of developing, debugging and maintaining the system. +<p/> +The NOC metric can also usefully be applied at the package and class level +as well as the total system. +<p/> +NOCL is defined for class and interfaces. It counts the number of classes or +interfaces that are declared. This is usually 1, but nested class declarations +will increase this number. +</body> +</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; + } + .Error { + font-weight:bold; color:red; + } + +</xsl:template> + +<!-- print the metrics of the class --> +<xsl:template match="class" mode="class.details"> + <!--xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/--> + <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 = 'unnamed package')"><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="all.metrics.header"/> + <xsl:apply-templates select="." mode="print.metrics"/> + </table> + + <H3>Methods</H3> + <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%"> + <xsl:call-template name="method.metrics.header"/> + <xsl:apply-templates select="method" mode="print.metrics"/> + </table> + + <xsl:call-template name="pageFooter"/> + </BODY> + </HTML> +</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%"> + <!-- xalan-nodeset:nodeset for Xalan 1.2.2 --> + <xsl:for-each select="$doctree/classes/class[@package = current()/@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="metrics" mode="all.classes"> + <html> + <head> + <xsl:call-template name="create.stylesheet.link"> + <xsl:with-param name="package.name" select="''"/> + </xsl:call-template> + </head> + <body> + <h2>Classes</h2> + <table width="100%"> + <xsl:for-each select="$doctree/classes/class"> + <xsl:sort select="@name"/> + <xsl:apply-templates select="." mode="all.classes"/> + </xsl:for-each> + </table> + </body> + </html> +</xsl:template> + +<xsl:template match="class" mode="all.classes"> + <xsl:variable name="package.name" select="@package"/> + <xsl:variable name="class.name" select="@name"/> + <tr> + <td nowrap="nowrap"> + <a target="classFrame"> + <xsl:attribute name="href"> + <xsl:if test="not($package.name='unnamed package')"> + <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text> + </xsl:if> + <xsl:value-of select="$class.name"/><xsl:text>.html</xsl:text> + </xsl:attribute> + <xsl:value-of select="$class.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="metrics" mode="all.packages"> + <html> + <head> + <xsl:call-template name="create.stylesheet.link"> + <xsl:with-param name="package.name" select="./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=".//package[not(./@name = 'unnamed package')]" mode="all.packages"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + </table> + </body> + </html> +</xsl:template> + +<xsl:template match="package" mode="all.packages"> + <tr> + <td nowrap="nowrap"> + <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame"> + <xsl:value-of select="@name"/> + </a> + </td> + </tr> +</xsl:template> + + +<xsl:template match="metrics" mode="overview.packages"> + <html> + <head> + <xsl:call-template name="create.stylesheet.link"> + <xsl:with-param name="package.name" select="''"/> + </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><a href="metrics-reference.html#V(G)">V(G)</a></th> + <th><a href="metrics-reference.html#LOC">LOC</a></th> + <th><a href="metrics-reference.html#DIT">DIT</a></th> + <th><a href="metrics-reference.html#NOA">NOA</a></th> + <th><a href="metrics-reference.html#NRM">NRM</a></th> + <th><a href="metrics-reference.html#NLM">NLM</a></th> + <th><a href="metrics-reference.html#WMC">WMC</a></th> + <th><a href="metrics-reference.html#RFC">RFC</a></th> + <th><a href="metrics-reference.html#DAC">DAC</a></th> + <th><a href="metrics-reference.html#FANOUT">FANOUT</a></th> + <th><a href="metrics-reference.html#CBO">CBO</a></th> + <th><a href="metrics-reference.html#LCOM">LCOM</a></th> + <th><a href="metrics-reference.html#NOCL">NOCL</a></th> + </tr> + <xsl:apply-templates select="." mode="print.metrics"/> + </table> + <table border="0" width="100%"> + <tr> + <td style="text-align: justify;"> + Note: Metrics evaluate the quality of software by analyzing the program source and quantifying + various kind of complexity. Complexity is a common source of problems and defects in software. + High complexity makes it more difficult to develop, understand, maintain, extend, test and debug + a program. + <p/> + The primary use of metrics is to focus your attention on those parts of code that potentially are + complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial + actions. + For additional information about metrics and their meaning, please consult + Metamata Metrics manual. + </td> + </tr> + </table> + + <h3>Packages</h3> + <table border="0" cellpadding="5" cellspacing="2" width="100%"> + <xsl:call-template name="all.metrics.header"/> + <xsl:for-each select=".//package[not(@name = 'unnamed package')]"> + <xsl:sort select="@name" order="ascending"/> + <xsl:apply-templates select="." mode="print.metrics"/> + </xsl:for-each> + </table> + <!-- @bug there could some classes at this level (classes in unnamed package) --> + <xsl:call-template name="pageFooter"/> + </body> + </html> +</xsl:template> + +<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> + <body onload="open('package-frame.html','classListFrame')"> + <xsl:call-template name="pageHeader"/> + <!-- create an anchor to this package name --> + <h3>Package <xsl:value-of select="@name"/></h3> + + <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%"> + <xsl:call-template name="all.metrics.header"/> + <xsl:apply-templates select="." mode="print.metrics"/> + </table> + + <table border="0" width="100%"> + <tr> + <td style="text-align: justify;"> + Note: Metrics evaluate the quality of software by analyzing the program source and quantifying + various kind of complexity. Complexity is a common source of problems and defects in software. + High complexity makes it more difficult to develop, understand, maintain, extend, test and debug + a program. + <p/> + The primary use of metrics is to focus your attention on those parts of code that potentially are + complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial + actions. + For additional information about metrics and their meaning, please consult + Metamata Metrics manual. + </td> + </tr> + </table> + + <xsl:variable name="classes-in-package" select="$doctree/classes/class[@package = current()/@name]"/> + <xsl:if test="count($classes-in-package) > 0"> + <H3>Classes</H3> + <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%"> + <xsl:call-template name="all.metrics.header"/> + <xsl:for-each select="$classes-in-package"> + <xsl:sort select="@name"/> + <xsl:apply-templates select="." mode="print.metrics"/> + </xsl:for-each> + </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 Metrics</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 Metrics</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td> + </tr> + </table> + <hr size="1"/> +</xsl:template> + +<!-- Page Footer --> +<xsl:template name="pageFooter"> + <table width="100%"> + <tr><td><hr noshade="yes" size="1"/></td></tr> + <tr><td> + <div align="center"><font color="#525D76" size="-1"><em> + Copyright © 1999-2001, Apache Software Foundation + </em></font></div> + </td></tr> + </table> +</xsl:template> + +<!-- class header --> +<xsl:template name="all.metrics.header"> + <tr> + <th width="80%">Name</th> + <th nowrap="nowrap">V(G)</th> + <th>LOC</th> + <th>DIT</th> + <th>NOA</th> + <th>NRM</th> + <th>NLM</th> + <th>WMC</th> + <th>RFC</th> + <th>DAC</th> + <th>FANOUT</th> + <th>CBO</th> + <th>LCOM</th> + <th>NOCL</th> + </tr> +</xsl:template> + +<!-- method header --> +<xsl:template name="method.metrics.header"> + <tr> + <th width="80%">Name</th> + <th nowrap="nowrap">V(G)</th> + <th>LOC</th> + <th>FANOUT</th> + <th>CBO</th> + </tr> +</xsl:template> + +<!-- method information --> +<xsl:template match="method" mode="print.metrics"> + <tr> + <xsl:call-template name="alternate-row"/> + <td><xsl:apply-templates select="@name"/></td> + <td><xsl:apply-templates select="@vg"/></td> + <td><xsl:apply-templates select="@loc"/></td> + <td><xsl:apply-templates select="@fanout"/></td> + <td><xsl:apply-templates select="@cbo"/></td> + </tr> +</xsl:template> + +<!-- class information --> +<xsl:template match="class" mode="print.metrics"> + <tr> + <xsl:call-template name="alternate-row"/> + <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td> + <td><xsl:apply-templates select="@vg"/></td> + <td><xsl:apply-templates select="@loc"/></td> + <td><xsl:apply-templates select="@dit"/></td> + <td><xsl:apply-templates select="@noa"/></td> + <td><xsl:apply-templates select="@nrm"/></td> + <td><xsl:apply-templates select="@nlm"/></td> + <td><xsl:apply-templates select="@wmc"/></td> + <td><xsl:apply-templates select="@rfc"/></td> + <td><xsl:apply-templates select="@dac"/></td> + <td><xsl:apply-templates select="@fanout"/></td> + <td><xsl:apply-templates select="@cbo"/></td> + <td><xsl:apply-templates select="@lcom"/></td> + <td><xsl:apply-templates select="@nocl"/></td> + </tr> +</xsl:template> + +<xsl:template match="file|package" mode="print.metrics"> + <tr> + <xsl:call-template name="alternate-row"/> + <td> + <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame"> + <xsl:value-of select="@name"/> + </a> + </td> + <td><xsl:apply-templates select="@vg"/></td> + <td><xsl:apply-templates select="@loc"/></td> + <td><xsl:apply-templates select="@dit"/></td> + <td><xsl:apply-templates select="@noa"/></td> + <td><xsl:apply-templates select="@nrm"/></td> + <td><xsl:apply-templates select="@nlm"/></td> + <td><xsl:apply-templates select="@wmc"/></td> + <td><xsl:apply-templates select="@rfc"/></td> + <td><xsl:apply-templates select="@dac"/></td> + <td><xsl:apply-templates select="@fanout"/></td> + <td><xsl:apply-templates select="@cbo"/></td> + <td><xsl:apply-templates select="@lcom"/></td> + <td><xsl:apply-templates select="@nocl"/></td> + </tr> +</xsl:template> + +<xsl:template match="metrics" mode="print.metrics"> + <tr> + <xsl:call-template name="alternate-row"/> + <!-- the global metrics is the top package metrics --> + <td><xsl:apply-templates select="./package/@vg"/></td> + <td><xsl:apply-templates select="./package/@loc"/></td> + <td><xsl:apply-templates select="./package/@dit"/></td> + <td><xsl:apply-templates select="./package/@noa"/></td> + <td><xsl:apply-templates select="./package/@nrm"/></td> + <td><xsl:apply-templates select="./package/@nlm"/></td> + <td><xsl:apply-templates select="./package/@wmc"/></td> + <td><xsl:apply-templates select="./package/@rfc"/></td> + <td><xsl:apply-templates select="./package/@dac"/></td> + <td><xsl:apply-templates select="./package/@fanout"/></td> + <td><xsl:apply-templates select="./package/@cbo"/></td> + <td><xsl:apply-templates select="./package/@lcom"/></td> + <td><xsl:apply-templates select="./package/@nocl"/></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> + + +<!-- how to display the metrics with their max value --> +<!-- @todo the max values must be external to the xsl --> + + <xsl:template match="@vg"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$vg.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@loc"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$loc.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@dit"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$dit.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@noa"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$noa.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@nrm"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$nrm.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@nlm"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$nlm.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@wmc"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$wmc.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@rfc"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$rfc.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@dac"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$dac.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@fanout"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$fanout.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@cbo"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$cbo.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@lcom"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$lcom.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="@nocl"> + <xsl:call-template name="display-value"> + <xsl:with-param name="value" select="current()"/> + <xsl:with-param name="max" select="$nocl.max"/> + </xsl:call-template> + </xsl:template> + + <xsl:template name="display-value"> + <xsl:param name="value"/> + <xsl:param name="max"/> + <xsl:if test="$value > $max"> + <xsl:attribute name="class">Error</xsl:attribute> + </xsl:if> + <xsl:value-of select="$value"/> + </xsl:template> + +</xsl:stylesheet> + diff --git a/build/tools/jakarta-ant-1.5.1/etc/tagdiff.xsl b/build/tools/jakarta-ant-1.5.1/etc/tagdiff.xsl new file mode 100644 index 000000000..4dac8f4b7 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/etc/tagdiff.xsl @@ -0,0 +1,162 @@ +<!-- 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> + </HEAD> + <BODY link="#000000" alink="#000000" vlink="#000000" text="#000000"> + <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> + <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://jakarta.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> + + <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)][not(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: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> diff --git a/build/tools/jakarta-ant-1.5.1/lib/README b/build/tools/jakarta-ant-1.5.1/lib/README new file mode 100644 index 000000000..250f071e9 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/lib/README @@ -0,0 +1,15 @@ +Please refer to the Ant manual under Installing Ant / Library
+Dependencies for a list of the jar requirements for various optional
+tasks and features.
+
+This directory contains xercesImpl.jar from the 2.2.0 release of
+Apache Xerces. For more information or newer releases see
+<http://xml.apache.org/xerces2-j/>. See the file LICENSE.xerces for
+the terms of distribution.
+
+It also contains xml-apis.jar, an Apache-controlled collection of
+standard classes from the 1.0b2 release of the Apache XML-Commons
+release. For more information or newer releases see
+<http://xml.apache.org/commons/>. See the files LICENSE.dom and
+LICENSE.sax for the terms of distribution.
+
diff --git a/build/tools/jakarta-ant-1.5.1/lib/ant.jar b/build/tools/jakarta-ant-1.5.1/lib/ant.jar Binary files differnew file mode 100644 index 000000000..7cf87e838 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/lib/ant.jar diff --git a/build/tools/jakarta-ant-1.5.1/lib/iContract-jdk1_2.jar b/build/tools/jakarta-ant-1.5.1/lib/iContract-jdk1_2.jar Binary files differnew file mode 100644 index 000000000..a05cd9276 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/lib/iContract-jdk1_2.jar diff --git a/build/tools/jakarta-ant-1.5.1/lib/optional.jar b/build/tools/jakarta-ant-1.5.1/lib/optional.jar Binary files differnew file mode 100644 index 000000000..1128e1d97 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/lib/optional.jar diff --git a/build/tools/jakarta-ant-1.5.1/lib/xercesImpl.jar b/build/tools/jakarta-ant-1.5.1/lib/xercesImpl.jar Binary files differnew file mode 100644 index 000000000..d41cf97ed --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/lib/xercesImpl.jar diff --git a/build/tools/jakarta-ant-1.5.1/lib/xml-apis.jar b/build/tools/jakarta-ant-1.5.1/lib/xml-apis.jar Binary files differnew file mode 100644 index 000000000..8331d27f1 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/lib/xml-apis.jar diff --git a/build/tools/jakarta-ant-1.5.1/welcome.html b/build/tools/jakarta-ant-1.5.1/welcome.html new file mode 100644 index 000000000..33f6a2a05 --- /dev/null +++ b/build/tools/jakarta-ant-1.5.1/welcome.html @@ -0,0 +1,124 @@ +<html> +<head> +<title>Welcome to Ant1.5</title> +</head> +<body bgcolor="#ffffff"> +<h1>Welcome to Ant1.5</h1> +Hello, and welcome to Ant1.5 +<p> +For new users to Ant, welcome to a new way to build your software. +<p> +For veteran Ant users, its been, what nine months since Ant 1.4.1 +shipped, and we've been as busy enhancing it as you've been using it. +<p> + +We know you've been using Ant, not just from the all the bug reports we +see, but from the awards we've been getting from JavaWorld and SD Magazine +and from the fact that it is now clearly a mainstream product. Every quality IDE, +from the Open Source projects: Emacs, NetBeans, Eclipse, JEdit, to the +commercial offerings such as IntelliJ IDEA and JBuilder now have high +quality Ant integration either built in or available as a +download. And they do that not just because it improves their products, +giving users the best of both worlds -great editors and a great build +process, but because Java developers are starting to expect Ant (and +JUnit) everywhere. +<p> +Even in mid-2001, if you said you were using Ant in your project, people +would stare at you. Now, as long as you are talking with Java developers +and not management or your family and friends, people will nod, shrug +and maybe ask you questions about build file and Ant configurations. The good +news: Ant 1.5 includes more helpful error messages and a new +<tt>-diagnostics</tt> command to look at your Ant installation and help work out why +things arent working. +<p> +Now, when you tell people you work on Ant in your spare time, +people used to give you very funny stares; now they ask you about how to +set up automated build processes, or deploy to some random app server. +The good news: Ant 1.5 makes it easier to answer those questions. + +The other sign of mainstream is that there are also books on the +subject, first Java Tools for Extreme Programming, then Ant: The +Definitive Guide, and the first Ant1.5 book, Java Development with Ant, +due to ship at the end of the month. (Steve says: I prefer the one with +my name on the cover as co-author, but I'm biased). +As usual, the manual has improved too: +regardless of whether you need a book to work with Ant or not, you need +that on-line documentation. And as usual, any extra contributions to the +docs are welcome indeed. +<p> +Ant has also influenced how projects are built. Now when you download +any open source project, or work with a closed source team, you expect +to see a file called build.xml there. Equally important, you expect that +build file to compile and run a set of tests using JUnit or a derivative +thereof; if they are missing, you worry. +<p> +Together, Ant and JUnit have transformed the mainstream process for +building and deploying Java projects. And that's pretty profound, when +you think about it. What is equally impressive is that this was all done +as a co-operative effort. Nobody works on Ant full-time; everybody uses +it to solve their problems, to address their build crises and generally +get something done in a hurry. It just so happens that the architectural +model of Java classes bound via introspection to the XML build file +makes it easy for people to add new tasks, extend existing ones and +generally ease their way into developing and extending Ant. It is the +users that have helped Ant become the success it is today, and will keep +it that way tomorrow. +<p> +<h2>What has changed</h2> +<p> +So, what is new in Ant1.5? Lots of stuff. You will have to look at the +<a href="WHATSNEW">whatsnew</a> file to see, but basically the changes +fall into a number of categories +<ol> +<li>Bug fixes. We know, some things were broken in 1.4. In ant1.5 we +have moved the bugs, fixing the ones we could, and no doubt adding +different ones. Hopefully the total bug count has decreased. +<li>Scalability. Changes in <ant> and a few other tasks should +make it easier to write large, scalable build files. +<li>Deployment. Take a look at the new <serverdeploy> task, add support +for your server if it isnt there. Tomcat 4.1 has its own deployment +tasks incidentally -fetch them from the tomcat pages. +<li>Ease of use. We have added new attributes to make the archive tasks +consistent with each other, new error messages for common problems (you +get a screenful of help when a task wont instantiate, for example), and +generally try and be helpful. As usual, we will accept contributions to +the documentation or the code for even more helpfulness. Hey, in ant1.5 +you dont need to double escape the $ sign to preserve it in a string! +<li>Java 1.4 support. We build and test fine on Java 1.4, and have the +extensions to javac needed to build code with assertions in. We should +point out that we have more work to do in this area: if someone wants to +write an <assertionset> datatype to give users control of which assertions +to enable, and patch this in to things like the <junit> and +<java> tasks, things would get very interesting. +<li>Continuous builds. Automated build tools are becoming more widely +used; fork options on <javac> and <javadoc> are there to +stop memory use growth on a continuous process. +<li>New platforms: MacOS X for owners of those cute little laptops, +Novell Netware servers, and even z/OS and OS/390 for mainframe +developers who write their build files on their virtual card punches. +<li>Conditions. Take a look at the <condition> tag to see what you can +look for, then at <waitfor> to use the same tests in deployment. +Finally, notice the <tt>if</tt> and <tt>unless</tt> attributes on +<fail> for easy halting of the build on a condition, without +having to resort to conditional targets. +</ol> + +There are many more enhancements, so we hope you will find your build +projects easier. We have, as usual, jumped through hoops to keep +existing builds working, even those build files that went out their way +to not work on Java 1.4 (hint: dont ask for the classic compiler, it has +gone away). If your build file stops working, and it isnt something listed +on the 'changes that may break your build' part of the WHATSNEW file, or +something we know about on bugzilla, please dont hesitate to file a new +bug report, preferably one with a replicable test and a patch to fix the +problem. +<p> +Thanks, +<p> +The Ant development team. +<p> +PS: many thanks for Magesh to being the build manager for this release! +He has been busy since Feb/March organizing it. Magesh -you are so good +at this you should do it next time too :) +</body></html> + |