Build - test+site changes
diff --git a/releng.wtpbuilder/components/jsf.tests/build.properties b/releng.wtpbuilder/components/jsf.tests/build.properties
new file mode 100644
index 0000000..7a336f1
--- /dev/null
+++ b/releng.wtpbuilder/components/jsf.tests/build.properties
@@ -0,0 +1,77 @@
+###############################################################################
+# Copyright (c) 2006 Oracle.
+# All rights reserved. This program and the accompanying materials 
+# are made available under the terms of the Common Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/cpl-v10.html
+# 
+# Contributors:
+#     Oracle - initial API and implementation
+###############################################################################
+#####################
+# Parameters describing how and where to execute the build.
+# Typical users need only update the following properties:
+#    baseLocation - where things you are building against are installed
+#    bootclasspath - The base jars to compile against (typicaly rt.jar)
+#    configs - the list of {os, ws, arch} configurations to build.  
+#
+# Of course any of the settings here can be overridden by spec'ing 
+# them on the command line (e.g., -DbaseLocation=d:/eclipse
+
+############# CVS CONTROL ################
+# The CVS tag to use when fetching the map files from the repository
+mapVersionTag=HEAD
+
+############## BUILD / GENERATION CONTROL ################
+# The directory into which the build elements will be fetched and where
+# the build will take place.
+#buildDirectory=c:/dev/build
+
+# Type of build.  Used in naming the build output.  Typically this value is
+# one of I, N, M, S, ...
+buildType=I
+
+# ID of the build.  Used in naming the build output.
+buildId=Build
+
+# Label for the build.  Used in naming the build output
+buildLabel=${buildType}.${buildId}
+
+# Timestamp for the build.  Used in naming the build output
+timestamp=007
+
+# Base location for anything the build needs to compile against.  For example,
+# when building GEF, the baseLocation should be the location of a previously
+# installed Eclipse against which the GEF code will be compiled.
+#baseLocation=c:/dev/eclipse
+
+# The location underwhich all of the build output will be collected.
+# This is a subdirectory of $buildDirectory
+# Set collectingFolder and archivePrefix to . if you want to create archives without
+# trailing eclipse in the paths of the included files
+collectingFolder=eclipse
+
+# The prefix that will be used in the generated archive. 
+# Does not make sense to use a different archivePrefix than collectingFolder, 
+# because zip wouldn't find any files to include into the target zip otherwise
+archivePrefix=eclipse
+
+# The list of {os, ws, arch} configurations to build.  This 
+# value is a '&' separated list of ',' separate triples.  For example, 
+#     configs=win32,win32,x86 & linux,motif,x86
+# By default the value is *,*,*
+#configs=*,*,* 
+
+#Arguments to send to the zip executable
+#zipArgs=
+
+############# JAVA COMPILER OPTIONS ##############
+# The location of the Java jars to compile against.  Typically the rt.jar for your JDK/JRE
+#bootclasspath=d:/ibm1.3.1/jre/lib/rt.jar
+#bootclasspath=D:\\java\\j2sdk1.4.2_05\\jre\\lib\\rt.jar
+
+# Whether or not to include debug info in the output jars
+javacDebugInfo=false 
+
+# Whether or not to fail the build if there are compiler errors
+javacFailOnError=true
diff --git a/releng.wtpbuilder/components/jsf.tests/customTargets.xml b/releng.wtpbuilder/components/jsf.tests/customTargets.xml
new file mode 100644
index 0000000..5237825
--- /dev/null
+++ b/releng.wtpbuilder/components/jsf.tests/customTargets.xml
@@ -0,0 +1,207 @@
+<project name="Build specific targets and properties" default="noDefault" >
+    <property name="postingDirectory" value="${buildDirectory}" />
+
+<!-- ===================================================================== -->
+<!-- Run a given ${target} on all elements being built -->
+<!-- Add on <ant> task for each top level element being built. -->
+<!-- ===================================================================== -->
+<target name="allElements">
+    <echo message="Target: ${target} " />
+    <echo message="basedir: ${basedir}" />
+    <echo message="component: ${component}" />
+    <echo message="buildDirectory: ${buildDirectory}" />
+    <echo message="baseLocation: ${baseLocation}" />
+	
+	<ant antfile="${genericTargets}" target="${target}" >
+		<property name="type" value="feature" />
+		<property name="id" value="org.eclipse.wtp.jsf.tests.feature" />
+	</ant>
+</target>
+
+<!-- ===================================================================== -->
+<!-- Targets to assemble the built elements for particular configurations  -->
+<!-- These generally call the generated assemble scripts (named in -->
+<!-- ${assembleScriptName}) but may also add pre and post processing -->
+<!-- Add one target for each root element and each configuration -->
+<!-- ===================================================================== -->
+
+<target name="assemble.org.eclipse.wtp.jsf.tests.feature">
+    <property name="archiveName" value="wtp-jsf-Automated-Tests-${buildLabel}.zip" />
+	
+    <ant antfile="${assembleScriptName}" dir="${buildDirectory}" />
+
+    <mkdir dir="${postingDirectory}/${buildLabel}/checksum" />
+    <checksum file="${postingDirectory}/${buildLabel}/wtp-jsf-Automated-Tests-${buildLabel}.zip" property="md5" />
+	
+    <echo message="${md5} *wtp-jsf-Automated-Tests-${buildLabel}.zip"
+          file="${postingDirectory}/${buildLabel}/checksum/wtp-jsf-Automated-Tests-${buildLabel}.zip.md5" />
+    <echo message="${md5}"
+          file="${postingDirectory}/${buildLabel}/checksum/wtp-jsf-Automated-Tests-${buildLabel}.zip.md5antformat" />
+</target>
+
+
+<!-- ===================================================================== -->
+<!-- Check out map files from correct repository -->
+<!-- Replace values for cvsRoot, package and mapVersionTag as desired. -->
+<!-- ===================================================================== -->
+<target name="checkLocal">
+        <available property="mapsLocal" file="${buildDirectory}/maps/releng-jsf" />
+</target>
+	
+<target name="getMapFiles" depends="checkLocal" unless="mapsLocal">
+    	
+        <!-- ***  change the repo info -->
+        <property name="mapCvsRoot" value=":${cvsProtocol}:${cvsUser}@${cvsServer}:${cvsRoot}" />
+        <property name="mapVersionTag" value="HEAD" />
+        <property name="cvsPackage" value="releng-jsf" />
+        <echo message="${mapCvsRoot} ${mapVersionTag} "/>
+        <echo message="cvsPackage = ${cvsPackage} "/>
+    	
+        <cvs cvsRoot="${mapCvsRoot}" package="${cvsPackage}" dest="${buildDirectory}/maps" tag="${mapVersionTag}" />
+        <!--tag the map files project-->
+        <antcall target="tagMapFiles">
+            <param name="mapCvsRoot" value="${mapCvsRoot}" />
+        </antcall>
+</target>
+
+<target name="tagMapFiles" if="tagMaps">
+        <cvs cvsRoot="${mapCvsRoot}" dest="${buildDirectory}/maps" command="tag v${buildType}${timestamp}" />
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do before setup -->
+<!-- ===================================================================== -->
+<target name="preSetup">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do after setup but before starting the build proper -->
+<!-- ===================================================================== -->
+<target name="postSetup">
+    <dirname file="${ant.file}" property="component.dir" />
+    <echo message="ant.file: ${ant.file}" />
+    <echo message="component.dir: ${component.dir}" />
+
+    <ant antfile="${component.dir}/dependency.xml" target="get">
+        <property name="dependency.properties" value="${buildDirectory}/maps/releng-jsf/maps/dependencies.properties" />
+        <property name="base.install.dir" value="${buildRoot}" />
+    </ant>
+    <!--fetch the additional pieces to build JSF tests -->
+    <property name="featureOnly" value="false" />
+    <property name="featureAndPlugins" value="true" />
+    <property name="featuresRecursively" value="true" />
+    
+    <ant antfile="${genericTargets}" dir="${pde.build.scripts}" target="fetchElement">
+        <property name="type" value="feature" />
+        <property name="id" value="org.eclipse.wtp.jsf.tests.feature" />
+    </ant>
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do before fetching the build elements -->
+<!-- ===================================================================== -->
+<target name="preFetch">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do after fetching the build elements -->
+<!-- ===================================================================== -->
+<target name="postFetch">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do before generating the build scripts. -->
+<!-- ===================================================================== -->
+<target name="preGenerate">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do after generating the build scripts. -->
+<!-- ===================================================================== -->
+<target name="postGenerate">
+</target>
+
+
+<!-- ===================================================================== -->
+<!-- Steps to do before running the build.xmls for the elements being built. -->
+<!-- ===================================================================== -->
+<target name="preProcess">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do after running the build.xmls for the elements being built. -->
+<!-- ===================================================================== -->
+<target name="postProcess">
+</target>
+
+
+<!-- ===================================================================== -->
+<!-- Steps to do before running assemble. -->
+<!-- ===================================================================== -->
+<target name="preAssemble">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do after  running assemble. -->
+<!-- ===================================================================== -->
+<target name="postAssemble">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do after the build is done. -->
+<!-- ===================================================================== -->
+<target name="postBuild">
+
+    <!-- create zipped up versions for update site -->
+    <property name="UpdateSiteStagingLocation" value="${buildDirectory}/updateSite" />
+    <antcall target="generateUpdateSite" />
+</target>
+
+<target name="generateUpdateSite">
+    <!-- Create the directory structure -->
+    <mkdir dir="${UpdateSiteStagingLocation}" />
+    <mkdir dir="${UpdateSiteStagingLocation}/features" />
+    <mkdir dir="${UpdateSiteStagingLocation}/plugins" />
+    <!-- Build the jar files -->
+    <antcall target="allElements">
+        <param name="genericTargets" value="${builder}/customTargets.xml" />
+        <param name="target" value="updateSiteExport" />
+    </antcall>
+    <antcall target="copySiteXmlFromCvs" />
+    <antcall target="createNightlyBuildSiteXml" />
+</target>
+<target name="updateSiteExport">
+    <ant antfile="build.xml"
+         dir="${buildDirectory}/features/${id}/"
+         target="build.update.jar">
+        <property name="feature.destination" value="${UpdateSiteStagingLocation}/features" />
+        <property name="plugin.destination" value="${UpdateSiteStagingLocation}/plugins" />
+    </ant>
+</target>
+<target name="copySiteXmlFromCvs" unless="isNightlyBuild">
+    <!-- connect to CVS and fetch site.xml, copy to ${UpdateSiteStagingLocation}/site.xml afterwards -->
+</target>
+<target name="createNightlyBuildSiteXml" if="isNightlyBuild">
+    <!-- create ${UpdateSiteStagingLocation}/site.xml which contains only the nighlty build version -->
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to test the build results -->
+<!-- ===================================================================== -->
+<target name="test" unless="dontRunTests">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Steps to do to publish the build results -->
+<!-- ===================================================================== -->
+<target name="publish">
+</target>
+
+<!-- ===================================================================== -->
+<!-- Default target                                                        -->
+<!-- ===================================================================== -->
+<target name="noDefault">
+	<echo message="You must specify a target when invoking this file" />
+</target>
+
+</project>
diff --git a/releng.wtpbuilder/components/jsf.tests/dependency.xml b/releng.wtpbuilder/components/jsf.tests/dependency.xml
new file mode 100644
index 0000000..b5b30e7
--- /dev/null
+++ b/releng.wtpbuilder/components/jsf.tests/dependency.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!-- ====================================================================== 
+    Properties that must be passed to this script:
+    base.install.dir
+	dependencyTargets
+	local.cache.dir
+	dependency.properties
+	baseos
+	basews
+	basearch
+                               
+	jsf Dependencies:
+
+     ====================================================================== -->
+<project name="test" default="get">
+
+	<target name="get">
+
+		<antcall target="getAndInstall">
+			<param name="groupId" value="wtp" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="emf" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="gef" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="jem" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="eclipse" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="eclipseTestFramework" />
+		</antcall>		
+		
+		
+	</target>
+
+	<target name="getAndInstall">
+
+	    <echo message="dependencyTargets: ${dependencyTargets}" />
+	
+		<ant antfile="${dependencyTargets}" target="checkDependency">
+			<property name="groupId" value="${groupId}" />
+		</ant>
+		<ant antfile="${dependencyTargets}" target="installDependency">
+			<property name="groupId" value="${groupId}" />
+			<property name="install.destination" value="${base.install.dir}" />
+		</ant>
+	</target>
+
+</project>
+
diff --git a/releng.wtpbuilder/distribution/jsf.build/build.xml b/releng.wtpbuilder/distribution/jsf.build/build.xml
index cdaf0f2..9b2fb44 100644
--- a/releng.wtpbuilder/distribution/jsf.build/build.xml
+++ b/releng.wtpbuilder/distribution/jsf.build/build.xml
@@ -22,7 +22,7 @@
 		<property file="${buildDirectory}/label.properties" />
 
 		<ant antfile="${monitorTargets}" target="notifyBuild" >
-			<property name="testManifest" value="${distribution.wtp.build.dir}/../wtp.site/testManifest.xml"/>
+			<property name="testManifest" value="${distribution.wtp.build.dir}/../jsf.site/testManifest.xml"/>
 			<property name="buildBranch" value="${buildBranch}"/>
 		</ant>
 	</target>
diff --git a/releng.wtpbuilder/distribution/jsf.site/build.xml b/releng.wtpbuilder/distribution/jsf.site/build.xml
new file mode 100644
index 0000000..051ee80
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/build.xml
@@ -0,0 +1,69 @@
+<project name="Build specific targets and properties" default="build">
+    <target name="build">
+        <java classpath="${pde.builder.path}/startup.jar" fork="true" classname="org.eclipse.core.launcher.Main" failonerror="true">
+            <jvmarg value="-Dosgi.ws=${basews}" />
+            <jvmarg value="-Dosgi.os=${baseos}" />
+            <jvmarg value="-Dosgi.arch=${basearch}" />
+            <jvmarg value="-Dbasews=${basews}" />
+            <jvmarg value="-Dbaseos=${baseos}" />
+            <jvmarg value="-Dbasearch=${basearch}" />
+            <jvmarg value="-Dbuild.home=${build.home}" />
+            <jvmarg value="-Dbuild.trial=${build.trial}" />
+            <jvmarg value="-DbuildType=${buildType}" />
+            <jvmarg value="-DbuildId=${buildId}" />
+            <jvmarg value="-DjavacDebugInfo=on" />
+            <jvmarg value="-DmapVersionTag=${mapVersionTag}" />
+            <jvmarg value="-Dbuild.distribution=${build.distribution}" />
+            <jvmarg value="-DbuildDirectory=${buildDirectory}" />
+            <jvmarg value="-Dwtp.builder.home=${wtp.builder.home}" />
+            <arg value="-application" />
+            <arg value="org.eclipse.ant.core.antRunner" />
+            <arg value="-buildfile" />
+            <arg value="${ant.file}" />
+            <arg value="publish" />
+        </java>
+    </target>
+
+    <!-- ===================================================================== -->
+    <!-- Steps to do to publish the build results -->
+    <!-- ===================================================================== -->
+    <target name="publish">
+        <dirname file="${ant.file}" property="component.dir" />
+        <ant antfile="${wtp.builder.home}/scripts/build/label.xml" />
+        <property file="${buildDirectory}/label.properties" />
+
+        <property name="publish.xml" value="${component.dir}/publish.xml" />
+
+        <property name="indexFileName" value="index.php" />
+        <property name="result" value="${buildDirectory}/${buildLabel}" />
+        <property name="indexTemplateFilename" value="index.html.template" />
+
+        <condition property="isBuildTested" value="true">
+            <available file="${buildDirectory}/${buildLabel}/testResults/consolelogs/jsftestlog.txt" />
+        </condition>
+        <condition property="isBuildTested" value="false">
+            <not>
+                <available file="${buildDirectory}/${buildLabel}/testResults/consolelogs/jsftestlog.txt" />
+            </not>
+        </condition>
+
+        <ant antfile="${publish.xml}" dir="${component.dir}">
+            <property name="dropTokenList" value="%jsf-runtime%,%jsf-tests%" />
+        	
+        	<!-- To Do: No committer drop site for JSF yet ? --> 
+            <property name="jsfDownloadURL" value="http://www.eclipse.org/downloads/download.php?file=/webtools/jsf/committers/drops"/>
+
+            <property name="isBuildTested" value="${isBuildTested}" />
+            <property name="indexTemplateFilename" value="${indexTemplateFilename}" />
+        </ant>
+
+        <!--  Get the build map over for the results to point to. -->
+        <copy file="${buildDirectory}/directory.txt" tofile="${result}/directory.txt" />
+
+        <!-- Copy info for build identification -->
+        <copy file="${buildDirectory}/buildmachineinfo.properties" tofile="${result}/buildmachineinfo.properties" />
+
+    </target>
+
+
+</project>
diff --git a/releng.wtpbuilder/distribution/jsf.site/publish.xml b/releng.wtpbuilder/distribution/jsf.site/publish.xml
new file mode 100644
index 0000000..5924b3c
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/publish.xml
@@ -0,0 +1,133 @@
+<project name="Publish Build" default="default" basedir=".">
+
+	<!-- Properties that must be passed to this script:
+	buildDirectory: Path to perform the build in.  (A working directory)
+	buildType:		Type of build (nightly, integration etc.)
+	buildId:		Build name
+	buildLabel:		<buildType>-<buildName>-<timestamp>
+-->
+	<property name="result" value="${buildDirectory}/${buildLabel}" />
+
+	<!--name of generated index page-->
+	<property name="indexFileName" value="index.php" />
+
+	<target name="default">
+		<antcall target="countFiles" />
+		<antcall target="generateIndex" />
+		<antcall target="getStaticFiles" />
+	</target>
+
+	<target name="generateIndex">
+
+		<property name="class" value="org.eclipse.releng.generators.TestResultsGenerator" />
+		<taskdef name="indexResults" classname="${class}" />
+
+		<!--
+	isBuildTested:  true|false  should JUnit plugin test results be used to generate index page
+	dropTokenList:  comma separated list of strings which should be replaced by the fileName attribute settings in the testManifest.xml.
+	xmlDirectoryName:  path to directory containing JUnit plugin test results in xml format (see doc is org.eclipse.test).
+	dropDirectoryName: path to directory containing the result of the build.
+	testResultsTemplateFileName:  path to template file used to generate page with links to JUnit test results	
+	testResultsHtmlFileName:  name of file which will be generated with links to JUnit test results
+	dropHtmlFileName:  name of generated index page
+	hrefTestResultsTargetPath:  relative path from index page to directory containing JUnit html test results
+	hrefCompileLogsTargetPath:  relative path from index page directory containing compilelogs
+	testManifestFileName:	name of xml file containing descriptions of zip types and log files
+
+	
+	
+-->
+		<property file="${buildDirectory}/maps/releng/maps/dependencies.properties" />
+		
+		<indexResults isBuildTested="${isBuildTested}" dropTokenList="${dropTokenList}" xmlDirectoryName="${result}/testResults/xml" dropDirectoryName="${result}" testResultsTemplateFileName="${basedir}/templateFiles/testResults.php.template" dropTemplateFileName="${basedir}/templateFiles/${indexTemplateFilename}" testResultsHtmlFileName="testResults.php" dropHtmlFileName="${indexFileName}" hrefTestResultsTargetPath="testResults/html" hrefCompileLogsTargetPath="compilelogs" compileLogsDirectoryName="${result}/compilelogs" testManifestFileName="${basedir}/testManifest.xml" />
+
+		<tstamp>
+			<format property="TODAY" pattern="MMMM d, yyyy" />
+		</tstamp>
+
+		<!--  Insert Build Type descriptor  -->
+		<antcall target="${buildType}" />
+
+		<!--  Insert Build Date  -->
+		<replace file="${result}/${indexFileName}" token="@date@" value="${TODAY}" />
+
+		<!--  Insert Build Name  -->
+		<replace file="${result}/${indexFileName}" token="@build@" value="${buildLabel}" />
+
+		<!--  Insert Mirror  Name  -->
+		<replace file="${result}/${indexFileName}" token="@mirror@" value="${jsfDownloadURL}/${buildLabel}/" />
+
+		<!--  Insert PreRequsites  -->
+
+		<replace file="${result}/${indexFileName}" token="@eclipseFile@" value="${eclipse.file.linux-gtk-x86}" />
+		<replace file="${result}/${indexFileName}" token="@eclipseURL@" value="${eclipse.url}/${eclipse.file.linux-gtk-x86}" />
+		<replace file="${result}/${indexFileName}" token="@eclipseBuildURL@" value="${eclipse.url}" />
+		<replace file="${result}/${indexFileName}" token="@emfFile@" value="${emf.file}" />
+		<replace file="${result}/${indexFileName}" token="@emfURL@" value="${emf.url}" />
+		<replace file="${result}/${indexFileName}" token="@gefFile@" value="${gef.file}" />
+		<replace file="${result}/${indexFileName}" token="@gefURL@" value="${gef.url}/${gef.file}" />
+		<replace file="${result}/${indexFileName}" token="@jemFile@" value="${jem.file}" />
+		<replace file="${result}/${indexFileName}" token="@jemURL@" value="${jem.url}/${jem.file}" />
+
+
+		<!--  Update timestamp on file to permit overwrite through Ant copy task  -->
+		<touch file="${result}/${indexFileName}" />
+	</target>
+
+
+	<target name="getStaticFiles">
+		<!--get static files required in the buildLabel directory-->
+		<copy todir="${result}">
+			<fileset dir="${basedir}/staticDropFiles" />
+		</copy>
+
+		<!--copy buildnotes from plugin directories-->
+		<mkdir dir="${result}/buildnotes" />
+		<copy todir="${result}/buildnotes" flatten="true">
+			<fileset dir="${buildDirectory}/plugins" includes="**/buildnotes_*.html" />
+		</copy>
+	</target>
+
+	<target name="countFiles">
+		<!--	files.count is a file that should exist in the drop directory with a count of the zip files in the same directory.
+		It is required to generate a link to the build on the downloads page.
+		Added remove .zip.MD5 - old files before a count
+ -->
+		<delete>
+			<fileset dir="${result}" id="id">
+				<include name="*.MD5" />
+			</fileset>
+		</delete>
+
+		<taskdef name="countFiles" classname="org.eclipse.releng.generators.FileCounter" />
+
+		<countFiles sourceDirectory="${result}" filterString=".zip,.tar.gz" outputFile="${result}/files.count" />
+
+	</target>
+
+	<!--Build type descriptors-->
+	<target name="I">
+		<replace file="${result}/${indexFileName}" token="@type@" value="Integration" />
+	</target>
+
+	<target name="S">
+		<replace file="${result}/${indexFileName}" token="@type@" value="Stable" />
+	</target>
+
+	<target name="N">
+		<replace file="${result}/${indexFileName}" token="@type@" value="Nightly" />
+	</target>
+
+	<target name="M">
+		<replace file="${result}/${indexFileName}" token="@type@" value="Maintenance" />
+	</target>
+
+	<target name="R">
+		<replace file="${result}/${indexFileName}" token="@type@" value="Release" />
+	</target>
+
+	<target name="T">
+		<replace file="${result}/${indexFileName}" token="@type@" value="Test" />
+	</target>
+
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/FAIL.gif b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/FAIL.gif
new file mode 100644
index 0000000..28bba66
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/FAIL.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/OK.gif b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/OK.gif
new file mode 100644
index 0000000..689e523
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/OK.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/buildNotes.php b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/buildNotes.php
new file mode 100644
index 0000000..cd7175b
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/buildNotes.php
@@ -0,0 +1,62 @@
+<html>
+<head>
+<?php
+	$parts = explode("/", getcwd());
+	$parts2 = explode("-", $parts[count($parts) - 1]);
+	$buildName = $parts2[1];
+	
+	// Get build type names
+
+	$fileHandle = fopen("../../dlconfig.txt", "r");
+	while (!feof($fileHandle)) {
+		
+		$aLine = fgets($fileHandle, 4096); // Length parameter only optional after 4.2.0
+		$parts = explode(",", $aLine);
+		$dropNames[trim($parts[0])] = trim($parts[1]);
+ 	}
+	fclose($fileHandle);
+
+	$buildType = $dropNames[$parts2[0]];
+
+	echo "<title>Build Notes for $buildType $buildName </title>";
+?>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+
+<p><b><font face="Verdana" size="+3">Build Notes</font></b> </p>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">
+	   Build Notes for <?php echo "$buildType $buildName"; ?></font></b></td>
+  </tr>
+</table>
+<table border="0">
+
+<?php
+	$hasNotes = false;
+	$aDirectory = dir("buildnotes");
+	while ($anEntry = $aDirectory->read()) {
+		if ($anEntry != "." && $anEntry != "..") {
+			$parts = explode("_", $anEntry);
+			$baseName = $parts[1];
+			$parts = explode(".", $baseName);
+			$component = $parts[0];
+			$line = "<td>Component: <a href=\"buildnotes/$anEntry\">$component</a></td>";
+			echo "<tr>";
+			echo "$line";
+			echo "</tr>";
+			$hasNotes = true;
+		}
+	}
+	aDirectory.closedir();
+	if (!$hasNotes) {
+		echo "<br>There are no build notes for this build.";
+	}
+?>
+
+</table>
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/componentxmls.php b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/componentxmls.php
new file mode 100644
index 0000000..73c5443
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/componentxmls.php
@@ -0,0 +1,53 @@
+<html>
+<head>
+<?php
+  function find_component_xml($directory)
+  {
+    $count = 0;
+    $dir = dir($directory);
+    while ($anEntry = $dir->read())
+    {
+      if ($anEntry != "." && $anEntry != "..")
+      {
+        $anEntry = $directory."/".$anEntry;
+        if (stristr($anEntry, '.source') === FALSE)
+        {
+          if (is_dir($anEntry))
+          {
+            find_component_xml($anEntry);
+          }
+          else
+          {
+            echo "<tr><td><a href=\"$anEntry\">";
+            echo substr($anEntry, 22);
+            echo "</a></td>";
+          }
+        }
+      }
+    }
+  }
+?>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+
+<p><b><font face="Verdana" size="+3">component.xml</font></b> </p>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">
+	   component.xml files for <?php echo "$buildType $buildName"; ?></font></b></td>
+  </tr>
+</table>
+
+<table border="1" width="100%">
+  <tr>
+    <th>component.xml</th>
+  </tr>
+<?php
+  find_component_xml("apitools/componentxmls");
+?>
+</table>
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/consoleLogs.php b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/consoleLogs.php
new file mode 100644
index 0000000..93d9886
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/consoleLogs.php
@@ -0,0 +1,70 @@
+<html>
+<head>
+<?php
+	$parts = explode("/", getcwd());
+	$parts2 = explode("-", $parts[count($parts) - 1]);
+	$buildName = $parts2[1];
+	
+	// Get build type names
+
+	$fileHandle = fopen("../../dlconfig.txt", "r");
+	while (!feof($fileHandle)) {
+		
+		$aLine = fgets($fileHandle, 4096); // Length parameter only optional after 4.2.0
+		$parts = explode(",", $aLine);
+		$dropNames[trim($parts[0])] = trim($parts[1]);
+ 	}
+	fclose($fileHandle);
+
+	$buildType = $dropNames[$parts2[0]];
+
+	echo "<title>Test Console Output for $buildType $buildName </title>";
+?>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+<title>Console Logs from Running JUnit Plug-in Tests</title></head>
+<body>
+
+<p><b><font face="Verdana" size="+3">Test Console Output</font></b> </p>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Console 
+      output from running JUnit plugin tests for 
+      <?php echo "$buildType $buildName"; ?>
+      </font></b></td>
+  </tr>
+</table>
+<table border="0">
+
+<?php
+	$hasNotes = false;
+	$aDirectory = dir("testResults/consolelogs");
+	$index = 0;
+	while ($anEntry = $aDirectory->read()) {
+		if ($anEntry != "." && $anEntry != "..") {
+			$entries[$index] = $anEntry;
+			$index++;
+		}
+	}
+	
+	aDirectory.closedir();
+	sort($entries);
+
+	for ($i = 0; $i < $index; $i++) {
+		$anEntry = $entries[$i];
+		$line = "<td>Component: <a href=\"testResults/consolelogs/$anEntry\">$anEntry</a></td>";
+		echo "<tr>";
+		echo "$line";
+		echo "</tr>";
+		$hasNotes = true;
+	}
+	
+	if (!$hasNotes) {
+		echo "<br>There are no test logs for this build.";
+	}
+?>
+
+</table>
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/download.php b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/download.php
new file mode 100644
index 0000000..671e743
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/download.php
@@ -0,0 +1,54 @@
+<html>
+<head>
+<title>Eclipse JSF Download Click Through</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+<?php
+	$parts = explode("-", $dropFile);
+	$clickFile = "clickThroughs/";
+	for ($i =0; $i<count($parts); $i++) {
+		if ($i != 2) {
+			$clickFile = $clickFile.$parts[$i];
+		    if ($i < count($parts) - 1) {
+        	    $clickFile = $clickFile."-";
+            }
+ 		}
+	}
+	$clickFile = $clickFile.".txt";
+
+	if (file_exists($clickFile)) {
+		$fileHandle = fopen($clickFile, "r");
+		while (!feof($fileHandle)) {
+			$aLine = fgets($fileHandle, 4096);
+			$result = $result.$aLine;
+		}
+		fclose($fileHandle);
+	} else {
+		echo '<META HTTP-EQUIV="Refresh" CONTENT="0;URL='.$dropFile.'">';
+		echo '<b><font size "+4">Downloading: '.$dropFile.'</font></b>';
+		echo '<BR>';
+		echo '<BR>';
+		echo 'If your download does not begin automatically click <a href="'.$dropFile.'">here</a>.';
+	}
+?>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+  <?php
+	if (file_exists($clickFile)) {
+	 echo '<p><b><font size="+4">Important Notes<BR>';
+	 echo $dropFile;
+	 echo '</font></b></font></p>
+	<p>It is very important to read the following notes in order to run this version 
+	  of Eclipse. Once you have read the notes you can click on the Download link 
+	  to download the drop.</p>
+	';
+	  echo '<textarea name="textfield" cols="80" rows="20" wrap="PHYSICAL">'.$result;
+	  echo '</textarea>';
+	  echo '<BR>';
+	  echo '<BR>';
+	  echo '<a href="'.$dropFile.'">Download</a>';
+	}
+?>
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/pii.php b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/pii.php
new file mode 100644
index 0000000..e3ed59b
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/staticDropFiles/pii.php
@@ -0,0 +1,54 @@
+<html>
+<head>
+<?php
+  function write_unused_property($directory)
+  {
+    $count = 0;
+    $dir = dir($directory);
+    while ($anEntry = $dir->read())
+    {
+      if ($anEntry != "." && $anEntry != "..")
+      {
+        $anEntry = $directory."/".$anEntry;
+        if (is_dir($anEntry))
+        {
+          write_unused_property($anEntry);
+        }
+        else
+        {
+          echo "<tr><td><a href=\"$anEntry\">";
+          echo substr($anEntry, 16);
+          echo "</a></td>";
+          $lines = file($anEntry);
+          $count = count($lines);
+          echo "<td>$count</td></tr>";
+        }
+      }
+    }
+  }
+?>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+
+<p><b><font face="Verdana" size="+3">Unused property messages</font></b> </p>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">
+	   Unused property messages for <?php echo "$buildType $buildName"; ?></font></b></td>
+  </tr>
+</table>
+
+<table border="1">
+  <tr>
+    <th>Properties file</th>
+    <th>Unused strings</th>
+  </tr>
+<?php
+  write_unused_property("piitools");
+?>
+</table>
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/buildresult.xml.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/buildresult.xml.template
new file mode 100644
index 0000000..1fdede5
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/buildresult.xml.template
@@ -0,0 +1,2 @@
+<eclipsebuild buildlabel="@buildlabel@">
+</eclipsebuild>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/cloudscapeplugin.xml.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/cloudscapeplugin.xml.template
new file mode 100644
index 0000000..3f7a21b
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/cloudscapeplugin.xml.template
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+   id="Cloudscape"
+   name="Cloudscape Plug-in"
+   version="1.0.0"
+   provider-name="">
+   <runtime>
+      <library name="derby.jar">
+         <export name="*"/>
+      </library>
+      <library name="derbynet.jar">
+         <export name="*"/>
+      </library>
+      <library name="derbytools.jar">
+         <export name="*"/>
+      </library>
+   </runtime>
+</plugin>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/index.html.N.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/index.html.N.template
new file mode 100644
index 0000000..8a68714
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/index.html.N.template
@@ -0,0 +1,128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+<title>Download</title>
+</head>
+
+<body>
+
+<?php
+include '../../report.php';
+$testResults = parse_testResult("testResults.php");
+list ($compileErrors, $compileWarnings, $junitFailures) = $testResults;
+$violations = parse("apitools/index.xml", "count=\"");
+$tc = parse("apitools/index-api-tc.xml", "missing-coverage-count=\"");
+$removed_apis = parse("apitools/index-api-compatibility.xml", "removed-api-count=\"");
+?>
+
+&nbsp; <table BORDER=0 CELLSPACING=5 CELLPADDING=2 WIDTH="100%" ><tr><td ALIGN=LEFT width="80%"> 
+<p><b><font face="Verdana" size="+3">@type@ Build: @build@</font></b><br>
+@date@ 
+</p>
+<p>These downloads are provided under the <a href="http://www.eclipse.org/legal/epl/notice.html">Eclipse Foundation 
+Software User Agreement</a>.</p>
+</td></tr></table>
+
+<!-- ***********  Build Status **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"> <b><font face="Arial,Helvetica" color="#FFFFFF">Build, test and performance</font></b></td></tr></table>
+<br> <a href="buildNotes.php">Build notes</a>
+<br> <a href="directory.txt">map files</a>
+<br> <a href="testResults.php">Compile logs &amp; test results</a>
+
+<?php
+echo "<img src=\"http://download.eclipse.org/webtools/jsf/downloads/compile_err.gif\"/><font color=red>$compileErrors</font>&nbsp;";
+echo "<img src=\"http://download.eclipse.org/webtools/jsf/downloads/compile_warn.gif\"/><font color=orange>$compileWarnings</font>&nbsp;";
+echo "<img src=\"http://download.eclipse.org/webtools/jsf/downloads/junit_err.gif\"/><font color=red>$junitFailures</font>";
+?>
+
+<br> <a href="whatisfixed/buglog.html">What is fixed</a>
+
+<!--
+<br> <a href="perf/results/graph/global.php">Performance results</a>
+-->
+<br> <a href="pii.php">Unused property messages</a>
+<!-- To view cvs changes since the last build click  <A href="rloghtml/rlog.html">here</A>.<BR> -->
+<p/>
+
+<?php
+if (file_exists("./apiresults"))
+{
+  echo "<br>";
+  echo "<br> <a href=\"apiresults/api-progress.html\">API Progress Report</a>";
+  echo "<br> <a href=\"apiresults/api-info-summary.html\">APIs Defined by Each Component</a>";
+  echo "<br> <a href=\"apiresults/api-ref-compatibility.html\">Adopter Breakage Report</a>";
+  echo "<br> <a href=\"apiresults/api-violation-summary.html\">API Violations</a>";
+  echo "<br> <a href=\"apiresults/component-api-violation-all.html\">Non-API dependencies</a>";
+  echo "<br> <a href=\"apiresults/api-tc-summary.html\">API Test Coverage</a>";
+  echo "<br> <a href=\"apiresults/api-javadoc-summary.html\">API Javadoc Coverage</a>";
+} 
+?>
+
+<?php
+if (file_exists("./perfresults"))
+{
+  echo "<br>";
+  echo "<br> <a href=\"perfresults/graph/performance.php\">Performance Results</a>";
+  echo "<br>";
+}
+?>
+
+<!-- ***********  Requirements **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"> <b><font face="Arial,Helvetica" color="#FFFFFF">Requirements</font></b></td></tr></table>
+<P>These are the prerequisites to install JSF;. They must be downloaded and installed 
+  before JSF can be installed.</P>
+<br>
+<li>The Eclipse driver used in this build is <a href="@eclipseURL@">@eclipseFile@</a>. You can find a suitable driver for your platform at <a href=@eclipseBuildURL@>here</a><br></li>
+<li>The EMF driver used in this build is <a href="@emfURL@">@emfFile@</a><br></li>
+<li>The GEF driver used in this build is <a href="@gefURL@">@gefFile@</a><br></li>
+<li>Java EMF Model Runtime driver used in this build is <a href="@jemURL@">@jemFile@</a><br></li>
+<li>The WTP runtime module used in this build is <a href="@wtpURL@">@wtpFile@</a><br></li>
+<P></P>
+
+
+
+<!-- ***********  Runtime downloads **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr>
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"> <b><font face="Arial,Helvetica" color="#FFFFFF"> 
+      JSF Runtime </font></b></td>
+  </tr>
+
+<TR>
+    <TD align="LEFT" valign="TOP" colspan="3"> This module includes the complete 
+      set of plug-in to run JSF.</TD>
+  </TR></table>
+
+<table border=0 cellspacing=2 cellpadding=0 width="100%" bordercolor="#999999" >
+<tr><td align=RIGHT valign=TOP width="7%">
+<div align="left"><b>Status</b></div></td>
+<td width="34%"><b>Platform</b></td>
+<td width="59%"><b>Download</b></td></tr>
+%jsf-runtime% 
+</table>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td colspan="2">&nbsp;</td></tr></table>
+
+
+<!-- ***********  Automated Test Downloads **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td align=LEFT valign=TOP colspan="3" bgcolor="#999999">
+<b><font face="Arial,Helvetica" color="#FFFFFF">
+Automated Tests
+</font></b></td></tr>
+
+<TR>
+    <TD align="LEFT" valign="TOP" colspan="3"> This download contains the JUnit 
+      tests for the JSF project</TD>
+  </TR></table>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td colspan="2">&nbsp;</td></tr></table>
+
+<table BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH="100%" bordercolor="#999999" > 
+<tr><td align=RIGHT valign=TOP width="7%">
+<div align="left"><b>Status</b></div></td>
+<td width="34%"><b>Platform</b></td>
+<td width="59%"><b>Download</b></td></tr>
+<tr><td>%jsf-tests%</td></tr>
+</table>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td colspan="2">&nbsp;</td></tr></table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/index.html.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/index.html.template
new file mode 100644
index 0000000..64c6b88
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/index.html.template
@@ -0,0 +1,119 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+<title>Download</title>
+</head>
+
+<body>
+
+<?php
+include '../../report.php';
+$testResults = parse_testResult("testResults.php");
+list ($compileErrors, $compileWarnings, $junitFailures) = $testResults;
+?>
+
+&nbsp; <table BORDER=0 CELLSPACING=5 CELLPADDING=2 WIDTH="100%" ><tr><td ALIGN=LEFT width="80%"> 
+<p><b><font face="Verdana" size="+3">@type@ Build: @build@</font></b><br>
+@date@ 
+</p>
+<p>These downloads are provided under the <a href="http://www.eclipse.org/legal/epl/notice.html">Eclipse Foundation 
+Software User Agreement</a>.</p>
+</td></tr></table>
+
+<!-- ***********  Build Status **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"> <b><font face="Arial,Helvetica" color="#FFFFFF">Build, test and performance</font></b></td></tr></table>
+<br> <a href="buildNotes.php">Build notes</a>
+<br> <a href="directory.txt">map files</a>
+<br> <a href="testResults.php">Compile logs &amp; test results</a>
+
+<?php
+echo "<img src=\"http://download.eclipse.org/webtools/jsf/downloads/compile_err.gif\"/><font color=red>$compileErrors</font>&nbsp;";
+echo "<img src=\"http://download.eclipse.org/webtools/jsf/downloads/compile_warn.gif\"/><font color=orange>$compileWarnings</font>&nbsp;";
+echo "<img src=\"http://download.eclipse.org/webtools/jsf/downloads/junit_err.gif\"/><font color=red>$junitFailures</font>";
+?>
+<br> <a href="whatisfixed/buglog.html">What is fixed</a>
+
+<br> <a href="pii.php">Unused property messages</a>
+<!-- To view cvs changes since the last build click  <A href="rloghtml/rlog.html">here</A>.<BR> -->
+
+<?php
+if (file_exists("./apiresults"))
+{
+  echo "<br>";
+  echo "<br> <a href=\"apiresults/api-progress.html\">API Progress Report</a>";
+  echo "<br> <a href=\"apiresults/api-info-summary.html\">APIs Defined by Each Component</a>";
+  echo "<br> <a href=\"apiresults/api-ref-compatibility.html\">Adopter Breakage Report</a>";
+  echo "<br> <a href=\"apiresults/api-violation-summary.html\">API Violations</a>";
+  echo "<br> <a href=\"apiresults/component-api-violation-all.html\">Non-API dependencies</a>";
+  echo "<br> <a href=\"apiresults/api-tc-summary.html\">API Test Coverage</a>";
+  echo "<br> <a href=\"apiresults/api-javadoc-summary.html\">API Javadoc Coverage</a>";
+} 
+?>
+
+<?php
+if (file_exists("./perfresults"))
+{
+  echo "<br>";
+  echo "<br> <a href=\"perfresults/graph/performance.php\">Performance Results</a>";
+  echo "<br>";
+}
+?>
+
+<!-- ***********  Requirements **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"> <b><font face="Arial,Helvetica" color="#FFFFFF">Requirements</font></b></td></tr></table>
+<P>These are the prerequisites to install JSF;. They must be downloaded and installed 
+  before JSF can be installed.</P>
+<br>
+<li>The Eclipse driver used in this build is <a href="@eclipseURL@">@eclipseFile@</a>. You can find a suitable driver for your platform at <a href=@eclipseBuildURL@>here</a><br></li>
+<li>The EMF driver used in this build is <a href="@emfURL@">@emfFile@</a><br></li>
+<li>The GEF driver used in this build is <a href="@gefURL@">@gefFile@</a><br></li>
+<li>Java EMF Model Runtime driver used in this build is <a href="@jemURL@">@jemFile@</a><br></li>
+<li>The WTP runtime module used in this build is <a href="@wtpURL@">@wtpFile@</a><br></li>
+<P></P>
+
+
+
+<!-- ***********  Runtime downloads **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr>
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"> <b><font face="Arial,Helvetica" color="#FFFFFF"> 
+      JSF Runtime </font></b></td>
+  </tr>
+
+<TR>
+    <TD align="LEFT" valign="TOP" colspan="3"> This module includes the complete 
+      set of plug-in to run JSF. </TD>
+  </TR></table>
+
+<table border=0 cellspacing=2 cellpadding=0 width="100%" bordercolor="#999999" >
+<tr><td align=RIGHT valign=TOP width="7%">
+<div align="left"><b>Status</b></div></td>
+<td width="34%"><b>Platform</b></td>
+<td width="59%"><b>Download</b></td></tr>
+%jsf-runtime% 
+</table>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td colspan="2">&nbsp;</td></tr></table>
+
+
+<!-- ***********  Automated Test Downloads **************  -->
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td align=LEFT valign=TOP colspan="3" bgcolor="#999999">
+<b><font face="Arial,Helvetica" color="#FFFFFF">
+Automated Tests
+</font></b></td></tr>
+
+<TR><TD align="LEFT" valign="TOP" colspan="3">
+This download contains the JUnit tests for the JSF Projects
+</TD></TR></table>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td colspan="2">&nbsp;</td></tr></table>
+
+<table BORDER=0 CELLSPACING=2 CELLPADDING=0 WIDTH="100%" bordercolor="#999999" > 
+<tr><td align=RIGHT valign=TOP width="7%">
+<div align="left"><b>Status</b></div></td>
+<td width="34%"><b>Platform</b></td>
+<td width="59%"><b>Download</b></td></tr>
+<tr><td>%jsf-tests%</td></tr>
+</table>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" ><tr><td colspan="2">&nbsp;</td></tr></table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-all.php.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-all.php.template
new file mode 100644
index 0000000..a214891
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-all.php.template
@@ -0,0 +1,47 @@
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+<p><b><font face="Verdana" size="+3">Test Results</font></b> </p>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Unit 
+      Test Results </font></b></td>
+  </tr>
+</table>
+<p></p><table border="0">
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td width="81%"><b>Tests Performed</b></td>
+    <td width="19%"><b>Errors &amp; Failures</b></td>
+  </tr>
+  
+  %testresults%
+  
+</table>
+<br>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Plugins 
+      containing compile errors </font></b></td>
+  </tr>
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td><b>Compile Logs (Jar Files)</b></td>
+    <td><b>Errors</b></td>
+	<td><b>Warnings</b></td>
+  </tr>
+  
+  %compilelogs%
+  
+</table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-compile.php.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-compile.php.template
new file mode 100644
index 0000000..74927d6
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-compile.php.template
@@ -0,0 +1,39 @@
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+<p><b><font face="Verdana" size="+1">Test Results are not available yet</font></b> </p>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Unit 
+      Tests are in progress. Results will be ready soon... </font></b></td>
+  </tr>
+</table>
+<p></p><table border="0">
+</table>
+
+<p></p>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Plugins 
+      containing compile errors </font></b></td>
+  </tr>
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td><b>Compile Logs (Jar Files)</b></td>
+    <td><b>Errors</b></td>
+	<td><b>Warnings</b></td>
+  </tr>
+  
+  %compilelogs%
+  
+</table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-tests.php.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-tests.php.template
new file mode 100644
index 0000000..d31b525
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/monitor-tests.php.template
@@ -0,0 +1,59 @@
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+<p><b><font face="Verdana" size="+1">Compilation and Tests are complete, Performance results are not available yet</font></b> </p>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Unit 
+      Performance tests are in progress. Results will be ready soon... </font></b></td>
+  </tr>
+</table>
+<p></p><table border="0">
+</table>
+
+<p></p>
+
+<p><b><font face="Verdana" size="+3">Test Results</font></b> </p>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Unit 
+      Test Results </font></b></td>
+  </tr>
+</table>
+<p></p><table border="0">
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td width="81%"><b>Tests Performed</b></td>
+    <td width="19%"><b>Errors &amp; Failures</b></td>
+  </tr>
+  
+  %testresults%
+  
+</table>
+<br>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Plugins 
+      containing compile errors </font></b></td>
+  </tr>
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td><b>Compile Logs (Jar Files)</b></td>
+    <td><b>Errors</b></td>
+	<td><b>Warnings</b></td>
+  </tr>
+  
+  %compilelogs%
+  
+</table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/performance.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/performance.template
new file mode 100644
index 0000000..f8abfbc
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/performance.template
@@ -0,0 +1,62 @@
+<P>
+  <A NAME="unit"></A>
+  * Missing reference data. Build used for comparison specified in ending parenthesis.
+  <BR>green: faster, less memory
+  <BR>red: slower, more memory
+  <BR>x axis: difference between current value and baseline value as percentage
+  <BR>
+</P>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">
+      Detailed performance data grouped by scenario prefix
+    </font></b></td>
+  </tr>
+</table>
+
+<?php
+  $dir = dir(".");
+  while ($anEntry = $dir->read())
+  {
+    if ($anEntry != "global.php" && substr($anEntry, strlen($anEntry) - 4) == ".php")
+    {
+      echo "<a href=\"$anEntry\">$anEntry</a><br>";
+    }
+  }
+?>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td>&nbsp;</td>
+  </tr>
+</table>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">
+      Performance JUnit test results for <?php echo "$buildType $buildName"; ?>
+    </font></b></td>
+  </tr>
+</table>
+
+<font color="#FFFFFF" face="Arial,Helvetica">
+<table border=1" width="100%">
+  <tr>
+    <td width="100%"><b>Tests Performed</b></td>
+  </tr>
+  <?php
+    $xmlDir = dir("../xml");
+    while ($xmlEntry = $xmlDir->read())
+    {
+      if ($xmlEntry != "." && $xmlEntry != "..")
+      {
+        $htmlEntry = substr($xmlEntry, 0, strlen($xmlEntry) - 3) . "html";
+        echo "<tr>";
+        echo "<td><a href=\"../html/$htmlEntry\">$htmlEntry</a></td>";
+        echo "</tr>";
+      }
+    }
+  ?>
+</table>
+</html>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsf.site/templateFiles/testResults.php.template b/releng.wtpbuilder/distribution/jsf.site/templateFiles/testResults.php.template
new file mode 100644
index 0000000..f39f71c
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/templateFiles/testResults.php.template
@@ -0,0 +1,101 @@
+<html>
+<head>
+
+<?php
+	$parts = explode("/", getcwd());
+	$parts2 = explode("-", $parts[count($parts) - 1]);
+	$buildName = $parts2[1];
+	
+	// Get build type names
+
+	$fileHandle = fopen("../../dlconfig.txt", "r");
+	while (!feof($fileHandle)) {
+		
+		$aLine = fgets($fileHandle, 4096); // Length parameter only optional after 4.2.0
+		$parts = explode(",", $aLine);
+		$dropNames[trim($parts[0])] = trim($parts[1]);
+ 	}
+	fclose($fileHandle);
+
+	$buildType = $dropNames[$parts2[0]];
+
+	echo "<title>Test Results for $buildType $buildName </title>";
+?>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+<p><b><font face="Verdana" size="+3">Test Results</font></b> </p>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">
+    Unit Test Results for <?php echo "$buildType $buildName"; ?> on Various Platforms and JRE</font></b></td>
+  </tr>
+</table>
+
+<?php
+$dir = dir("testResults");
+while ($anEntry = $dir->read())
+{
+  if ($anEntry != "." && $anEntry != ".." && $anEntry != "consolelogs" && $anEntry != "html" && $anEntry != "xml")
+  {
+    $link = "testResults/".$anEntry."/results/index.php";
+    echo "<p><a href=\"$link\">$anEntry</a></p>";
+  }
+}
+?>
+
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Unit 
+      Test Results for <?php echo "$buildType $buildName"; ?> </font></b></td>
+  </tr>
+</table>
+<p></p><table border="0">
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td width="81%"><b>Tests Performed</b></td>
+    <td width="19%"><b>Errors &amp; Failures</b></td>
+  </tr>
+  
+  %testresults%
+  
+</table>
+<p></p>
+<br>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica"> 
+      Console output logs 
+      <?php echo "$buildType $buildName"; ?>
+      </font></b></td>
+  </tr>
+</table>
+<br>
+These <a href="consoleLogs.php">logs</a> contain the console output captured while 
+running the JUnit automated tests. <br>
+<br>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Plugins 
+      containing compile errors </font></b></td>
+  </tr>
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td><b>Compile Logs (Jar Files)</b></td>
+    <td><b>Errors</b></td>
+	<td><b>Warnings</b></td>
+  </tr>
+  
+  %compilelogs%
+  
+</table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.site/testManifest.xml b/releng.wtpbuilder/distribution/jsf.site/testManifest.xml
new file mode 100644
index 0000000..7d6023b
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.site/testManifest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<topLevel>
+	<zipTypes>
+		<zipType name="jsf-runtime">
+			<platform 
+				id="JSF-RUN" 
+				name="All"  
+				fileName='&lt;a href="@mirror@wtp-jsf-@build@.zip"&gt;wtp-jsf-@build@.zip&lt;/a&gt;(&lt;a href="checksum/wtp-jsf-@build@.zip.md5"&gt;md5&lt;/a&gt;) &lt;font size="2"&gt;&lt;/font&gt;'>
+			</platform>
+		</zipType>
+		
+		<zipType name="jsf-tests">
+			<platform 
+				id="JSF-TESTS" 
+				name="All" 
+				fileName='&lt;a href="@mirror@wtp-jsf-Automated-Tests-@build@.zip"&gt;wtp-jsf-Automated-Tests-@build@.zip&lt;/a&gt; (&lt;a href="checksum/wtp-jsf-Automated-Tests-@build@.zip.md5"&gt;md5&lt;/a&gt;) &lt;font size="2"&gt;&lt;/font&gt;'>
+			</platform>
+		</zipType>
+
+	</zipTypes>
+</topLevel>
diff --git a/releng.wtpbuilder/distribution/jsf.tests/build.xml b/releng.wtpbuilder/distribution/jsf.tests/build.xml
new file mode 100644
index 0000000..5409373
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/build.xml
@@ -0,0 +1,89 @@
+<project name="Build specific targets and properties" default="test">
+	<property name="postingDirectory" value="${buildDirectory}" />
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after the build is done. -->
+	<!-- ===================================================================== -->
+	<target name="test">
+		<antcall target="runTest" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do to test the build results -->
+	<!-- ===================================================================== -->
+	<target name="runTest">
+
+		<dirname file="${ant.file}" property="test.component.dir" />
+		<ant antfile="${wtp.builder.home}/scripts/build/label.xml" />
+		<property file="${wtp.builder.home}/build.properties" />
+		<property file="${buildDirectory}/label.properties" />
+
+		<mkdir dir="${testRoot}" />
+		<mkdir dir="${testRoot}/results" />
+		<mkdir dir="${testRoot}/results/consolelogs" />
+
+		<copy todir="${testRoot}" overwrite="true">
+			<fileset dir="${test.component.dir}/testScripts">
+			</fileset>
+		</copy>
+
+		<echo message="${baseos} ${basews} ${basearch} " />
+		<ant antfile="${test.component.dir}/testdependency.xml" target="get">
+			<property name="dependency.properties" value="${buildDirectory}/maps/releng-jsf/maps/dependencies.properties" />
+			<property name="base.install.dir" value="${testRoot}" />
+		</ant>
+		<unzip dest="${testRoot}" src="${postingDirectory}/${buildLabel}/wtp-jsf-${buildLabel}.zip" overwrite="true" />
+		<unzip dest="${testRoot}" src="${postingDirectory}/${buildLabel}/wtp-jsf-Automated-Tests-${buildLabel}.zip" overwrite="true" />
+
+		<antcall target="runTestEclipse">
+			<param name="testTarget" value="all" />
+		</antcall>
+		<antcall target="postRunTestEclipse">
+			<param name="testTarget" value="all" />
+		</antcall>
+		
+		<property name="monitorTargets" value="${wtp.builder.home}/scripts/monitoring/build.xml" />		
+		<ant antfile="${monitorTargets}" target="notifyTest" >
+			<property name="testManifest" value="${wtp.builder.home}/distribution/jsf.site/testManifest.xml"/>
+		</ant>
+	</target>
+
+	<target name="runTestEclipse">
+		<java taskname="test-jsf-${testTarget}" classpath="${testRoot}/eclipse/startup.jar" fork="true" classname="org.eclipse.core.launcher.Main" failonerror="true" timeout="3600000" output="${testRoot}/results/consolelogs/jsftestlog.txt" dir="${testRoot}">
+			<jvmarg value="-Dosgi.ws=${basews}" />
+			<jvmarg value="-Dosgi.os=${baseos}" />
+			<jvmarg value="-Dosgi.arch=${basearch}" />
+			<jvmarg value="-Dws=${basews}" />
+			<jvmarg value="-Dos=${baseos}" />
+			<jvmarg value="-Darch=${basearch}" />
+			<jvmarg value="-Dnoclean=true" />
+			<jvmarg value="-DbuildType=${buildType}" />
+			<jvmarg value="-DbuildId=${buildId}" />
+			<jvmarg value="-DbuildLabel=${buildLabel}" />
+			<arg value="-propertyfile" />
+			<arg value="test.properties" />
+			<arg value="-application" />
+			<arg value="org.eclipse.ant.core.antRunner" />
+			<arg value="-file" />
+			<arg value="test.xml" />
+			<arg value="-logger" />
+			<arg value="org.apache.tools.ant.DefaultLogger" />
+			<arg value="${testTarget}" />
+			<sysproperty key="build.home" value="${build.home}" />
+			<sysproperty key="buildDirectory" value="${buildDirectory}" />
+			<sysproperty key="baseLocation" value="${baseLocation}" />
+			<sysproperty key="testDir" value="${testRoot}" />
+			<sysproperty key="perf.buildId" value="${buildType}${date}-${time}" />
+			<sysproperty key="eclipseBuilderDirectory" value="${pde.builder.path}" />
+		</java>
+	</target>
+
+	<target name="postRunTestEclipse">
+		<copy todir="${buildDirectory}/${buildLabel}/testResults" overwrite="true">
+			<fileset dir="${testRoot}/results">
+				<include name="**/*.*" />
+			</fileset>
+		</copy>
+	</target>
+
+</project>
diff --git a/releng.wtpbuilder/distribution/jsf.tests/templateFiles/index.php b/releng.wtpbuilder/distribution/jsf.tests/templateFiles/index.php
new file mode 100644
index 0000000..0f041c6
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/templateFiles/index.php
@@ -0,0 +1,70 @@
+<html>
+<head>
+
+<?php
+    $parts = explode("/", realpath(".."));
+    $label = $parts[count($parts) - 1];
+?>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
+</head>
+<body>
+<p><b><font face="Verdana" size="+3">Test Results</font></b> </p>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Unit 
+      Test Results for <?php echo "$label"; ?> </font></b></td>
+  </tr>
+</table>
+<p></p><table border="0">
+</table>
+
+<table width="77%" border="1">
+  <tr> 
+    <td width="81%"><b>Tests Performed</b></td>
+    <td width="19%"><b>Errors &amp; Failures</b></td>
+  </tr>
+
+  <?
+    $dir = dir("html");
+    while ($anEntry = $dir->read())
+    {
+      if ($anEntry != "." && $anEntry != "..")
+      {
+        $link = "html/".$anEntry;
+        echo "<tr><td><a href=\"$link\">";
+        echo "$anEntry";
+        echo "</a></td>";
+        $xml = "xml/".substr($anEntry, 0, strlen($anEntry)-4)."xml";
+        $count = 0;
+        $fileHandle = fopen($xml, "r");
+        while (!feof($fileHandle))
+        {
+          $aLine = fgets($fileHandle, 4096); // Length parameter only optional after 4.2.0
+          $count = $count + substr_count($aLine, '<error>');
+        }
+        fclose($fileHandle);
+        echo "<td>$count</td></tr>";
+      }
+    }
+  ?>
+  
+</table>
+<p></p>
+<br>
+<table border=0 cellspacing=5 cellpadding=2 width="100%" >
+  <tr> 
+    <td align=LEFT valign=TOP colspan="3" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica"> 
+      Console output logs 
+      <?php echo "$label"; ?>
+      </font></b></td>
+  </tr>
+</table>
+<br>
+These <a href="consolelogs/jsftestlog.txt">logs</a> contain the console output captured while 
+running the JUnit automated tests. <br>
+<br>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsf.tests/testScripts/JUNIT.XSL b/releng.wtpbuilder/distribution/jsf.tests/testScripts/JUNIT.XSL
new file mode 100644
index 0000000..f632657
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/testScripts/JUNIT.XSL
@@ -0,0 +1,455 @@
+<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:output method="html" indent="yes"/>
+<xsl:decimal-format decimal-separator="." grouping-separator="," />
+
+<xsl:template match="testsuites">
+	<HTML>
+		<HEAD>
+    <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 language="JavaScript">
+        var TestCases = new Array();
+        var cur;
+        <xsl:for-each select="./testsuite">      
+            <xsl:apply-templates select="properties"/>
+        </xsl:for-each>
+
+       </script>
+       <script 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 &gt; 0">Failure</xsl:when>
+							<xsl:when test="$errorCount &gt; 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 &gt;&gt;
+			    </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 &gt; 0">Failure</xsl:when>
+					<xsl:when test="$errorCount &gt; 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 (erik@hatcher.net)
+   -->
+  <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[.&gt; 0]">Failure</xsl:when>
+				<xsl:when test="@errors[.&gt; 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>
+		<p/>
+		<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><!-- something isn't right here, basically all single quotes need to be replaced with backslash-single-quote
+		<xsl:when test="contains($string,'&apos;')">
+			<xsl:value-of select="substring-before($string,'&apos;')"/>
+			\&apos;
+			<xsl:call-template name="JS-escape">
+				<xsl:with-param name="string" select="substring-after($string,'&apos;')"/>
+			</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,'&#xA;')">
+			<xsl:value-of select="substring-before($word,'&#xA;')"/>
+			<br/>
+			<xsl:call-template name="br-replace">
+				<xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
+			</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/releng.wtpbuilder/distribution/jsf.tests/testScripts/api-tests.xml b/releng.wtpbuilder/distribution/jsf.tests/testScripts/api-tests.xml
new file mode 100644
index 0000000..8aad53d
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/testScripts/api-tests.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<project name="API tests"  basedir="." >
+
+  <property file="${testDir}/buildAll.properties"/>
+  <property file="${testDir}/build.cfg"/>
+
+  <property name="library-xml-file" value="${basedir}/plugins/org.eclipse.test_3.1.0/library.xml"/>
+  <import file="${library-xml-file}"/>
+
+  <target name="ui-test">
+    <antcall target="runPIAgent">
+      <param name="application" value="org.eclipse.test.uitestapplication"/>
+    </antcall>
+  </target>
+
+  <target name="core-test">
+    <antcall target="runPIAgent">
+      <param name="application" value="org.eclipse.test.coretestapplication"/>
+    </antcall>
+  </target>
+
+  <target name="init">
+    <property name="piagentDir" value="${testDir}/piagent"/>
+    <property name="component.core" value="releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core"/>
+    <condition property="piAgent.exists">
+      <or>
+        <available property="piAgent.dll.exists" file="${piagentDir}/piAgent.dll"/>
+        <available property="libpiAgent.so.exists" file="${piagentDir}/libpiAgent.so"/>
+      </or>
+    </condition>
+    <antcall target="init2"/>
+  </target>
+
+  <target name="init2" unless="piAgent.exists">
+    <mkdir dir="${piagentDir}"/>
+    <cvs
+      cvsRoot=":pserver:anonymous@dev.eclipse.org:/cvsroot/webtools"
+      package="${component.core}"
+      dest="${piagentDir}"
+      command="export"
+      tag="HEAD"
+    />
+    <mkdir dir="${piagentDir}/${component.core}/bin"/>
+    <javac
+      srcdir="${piagentDir}/${component.core}/src"
+      destdir="${piagentDir}/${component.core}/bin"
+      fork="true">
+      <classpath>
+        <fileset dir="${baseLocation}/plugins">
+          <include name="**/*.jar" />
+        </fileset>
+      </classpath>
+    </javac>
+    <condition property="piAgentURL" value="${piAgentURL.linux}">
+      <equals arg1="${os}" arg2="linux" />
+    </condition>
+    <condition property="piAgentURL" value="${piAgentURL.win32}">
+      <equals arg1="${os}" arg2="win32" />
+    </condition>
+    <condition property="piAgentFile" value="${piAgentFile.linux}">
+      <equals arg1="${os}" arg2="linux" />
+    </condition>
+    <condition property="piAgentFile" value="${piAgentFile.win32}">
+      <equals arg1="${os}" arg2="win32" />
+    </condition>
+    <condition property="os.linux">
+      <equals arg1="${os}" arg2="linux" />
+    </condition>
+    <condition property="os.win32">
+      <equals arg1="${os}" arg2="win32" />
+    </condition>
+    <available file="${build.home}/${build.drivers}/${piAgentFile}" property="piAgent.exists"/>
+    <antcall target="getPIAgent"/>
+    <antcall target="setupPIAgentLinux"/>
+    <antcall target="setupPIAgentWin32"/>
+  </target>
+
+  <target name="getPIAgent" unless="piAgent.exists">
+    <get src="${piAgentURL}" dest="${build.home}/${build.drivers}/${piAgentFile}"/>
+  </target>
+
+  <target name="setupPIAgentLinux" if="os.linux">
+    <unzip dest="${piagentDir}" src="${build.home}/${build.drivers}/${piAgentFile}">
+      <patternset>
+        <include name="**/*.so"/>
+      </patternset>
+    </unzip>
+    <move todir="${piagentDir}" flatten="true">
+      <fileset dir="${piagentDir}/lib"/>
+    </move>
+    <copy file="${piagentDir}/${component.core}/apiagent/libpiAgent.so" tofile="${piagentDir}/libpiAgent.so" overwrite="true"/>
+  </target>
+
+  <target name="setupPIAgentWin32" if="os.win32">
+    <unzip dest="${piagentDir}" src="${build.home}/${build.drivers}/${piAgentFile}">
+      <patternset>
+        <include name="**/*.dll"/>
+      </patternset>
+    </unzip>
+    <move todir="${piagentDir}" flatten="true">
+      <fileset dir="${piagentDir}/bin"/>
+    </move>
+    <copy file="${piagentDir}/${component.core}/apiagent/piAgent.dll" tofile="${piagentDir}/piAgent.dll" overwrite="true"/>
+  </target>
+
+  <target name="runPIAgent" depends="init">
+    <property name="piagentDir" value="${testDir}/piagent"/>
+    <property name="component.core" value="org.eclipse.wtp.releng/apitools/org.eclipse.wtp.releng.tools.component.core"/>
+    <condition property="piAgent.exists">
+      <and>
+        <or>
+          <available property="piAgent.dll.exists" file="${piagentDir}/piAgent.dll"/>
+          <available property="libpiAgent.so.exists" file="${piagentDir}/libpiAgent.so"/>
+        </or>
+        <available property="buildDirectory.exists" file="${buildDirectory}"/>
+        <isset property="package.includes"/>
+      </and>
+    </condition>
+    <antcall target="runPIAgent2"/>
+  </target>
+
+  <target name="runPIAgent2" if="piAgent.exists">
+    <java classname="org.eclipse.wtp.releng.tools.component.piagent.PIAgentFiltersEmitter" fork="true" maxmemory="256m">
+      <arg line="-eclipseDirs ${buildDirectory}/plugins -compXMLDirs ${buildDirectory}/plugins -outputFile ${piagentDir}/piagent_filters.txt -includes ${package.includes}" />
+      <classpath>
+        <pathelement path="${piagentDir}/${component.core}/bin"/>
+        <fileset dir="${baseLocation}/plugins">
+          <include name="**/*.jar" />
+        </fileset>
+      </classpath>
+    </java>
+  	<tstamp>
+      <format property="TIMENOW" pattern="HHmmssSSSS"/>
+    </tstamp>
+    <property name="vmargs" value=""/>
+    <property name="launcher" value="org.eclipse.core.launcher.Main"/>
+    <property name="formatter" value="org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter"/>
+    <property name="extraVMargs" value=""/>
+    <property name="plugin-path" value=""/>
+    <property name="timeout" value="7200000"/>
+    <property file="${testDir}/eclipse/configuration/config.ini"/>
+	<echo message="Running ${classname}"/>
+	<mkdir dir="${buildDirectory}/apitools/piagentoutput"/>
+	<delete file="${buildDirectory}/apitools/piagentoutput/${classname}.trcxml" failonerror="false"/>
+    <exec dir="${piagentDir}" executable="java" timeout="${timeout}">
+      <env key="LD_LIBRARY_PATH" value="${piagentDir}"/>
+      <env key="java.library.path" value="${piagentDir}"/>
+      <env key="PLUGIN_PATH" value="${plugin-path}"/>
+      <arg line="-cp ${testDir}/eclipse/startup.jar -XrunpiAgent:server=standalone,profile=${piagentDir}/${component.core}/apiagent/piagent_options.txt,filters=${piagentDir}/piagent_filters.txt,file=${buildDirectory}/apitools/piagentoutput/${plugin-name}-${classname}.trcxml -Xmx512M ${vmargs} ${extraVMargs} ${launcher} -application ${application} -dev bin -data ${data-dir} formatter=${formatter},${testDir}/eclipse/${classname}.xml -testPluginName ${plugin-name} -className ${classname} -os ${os} -ws ${ws} -arch ${arch} -consolelog"/>
+    </exec>
+  </target>
+
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsf.tests/testScripts/junit-tests.xml b/releng.wtpbuilder/distribution/jsf.tests/testScripts/junit-tests.xml
new file mode 100644
index 0000000..db800fd
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/testScripts/junit-tests.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<project name="JUnit tests"  basedir="." >
+
+  <property name="library-xml-file" value="${basedir}/plugins/org.eclipse.test_3.1.0/library.xml"/>
+  <import file="${library-xml-file}"/>
+
+  <target name="core-test">
+  	<property name="extraVMargs" value=""/>
+    <antcall target="eclipse-test">
+      <param name="application" value="org.eclipse.test.coretestapplication"/>
+      <param name="extraVMargs" value="${extraVMargs} -Dwtp.autotest.noninteractive=true"/>
+    </antcall>
+  </target>
+
+  <target name="ui-test">
+  	<property name="extraVMargs" value=""/>
+    <antcall target="eclipse-test">
+      <param name="application" value="org.eclipse.test.uitestapplication"/>
+      <param name="extraVMargs" value="${extraVMargs} -Dwtp.autotest.noninteractive=true"/>
+    </antcall>
+  </target>
+
+</project>
diff --git a/releng.wtpbuilder/distribution/jsf.tests/testScripts/performance-tests.xml b/releng.wtpbuilder/distribution/jsf.tests/testScripts/performance-tests.xml
new file mode 100644
index 0000000..38b610f
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/testScripts/performance-tests.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<project name="WTP Performance" default="default" basedir="." >
+
+  <property name="library-xml-file" value="${basedir}/plugins/org.eclipse.test_3.1.0/library.xml"/>
+  <import file="${library-xml-file}"/>
+
+  <target name="ui-test">
+    <antcall target="ui-test-normal"/>
+    <antcall target="ui-test-perf"/>
+  </target>
+
+  <target name="core-test">
+    <antcall target="core-test-normal"/>
+    <antcall target="core-test-perf"/>
+  </target>
+
+  <target name="ui-test-normal" unless="runAsPerfApp">
+    <antcall target="run">
+      <param name="target" value="ui-test"/>
+    </antcall>
+  </target>
+
+  <target name="core-test-normal" unless="runAsPerfApp">
+    <antcall target="run">
+      <param name="target" value="core-test"/>
+    </antcall>
+  </target>
+
+  <target name="ui-test-perf" if="runAsPerfApp">
+    <antcall target="run">
+      <param name="target" value="eclipse-test"/>
+      <param name="application" value="org.eclipse.wst.common.tests.performance.uitestapplication"/>
+    </antcall>
+  </target>
+  
+  <target name="core-test-perf" if="runAsPerfApp">
+    <antcall target="run">
+      <param name="target" value="eclipse-test"/>
+      <param name="application" value="org.eclipse.wst.common.tests.performance.coretestapplication"/>
+    </antcall>
+  </target>
+
+  <target name="run">
+
+    <property name="eclipse.perf.dbloc" value="-Declipse.perf.dbloc=${build.home}/${perf.dbloc}"/>
+    <property name="eclipse.perf.config" value="-Declipse.perf.config=config=${perf.config};build=${perf.buildId};jvm=${perf.jvm}"/>
+    <property name="eclipse.perf.assertAgainst" value="-Declipse.perf.assertAgainst=config=${perf.ref.config};build=${perf.ref.buildId};jvm=${perf.ref.jvm}"/>
+    <property name="extraVMargs" value=""/>
+
+    <ant target="${target}" antfile="${library-xml-file}" dir="${basedir}">
+      <property name="application" value="${application}"/>
+      <property name="data-dir" value="${data-dir}"/>
+      <property name="plugin-name" value="${plugin-name}"/>
+      <property name="classname" value="${classname}"/>
+      <property name="extraVMargs" value="${eclipse.perf.dbloc} ${eclipse.perf.config} ${eclipse.perf.assertAgainst} ${extraVMargs} -Dwtp.autotest.noninteractive=true"/>
+    </ant>
+
+  </target>
+
+  <target name="default"/>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsf.tests/testScripts/test.properties b/releng.wtpbuilder/distribution/jsf.tests/testScripts/test.properties
new file mode 100644
index 0000000..13c7bc2
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/testScripts/test.properties
@@ -0,0 +1,7 @@
+# JSF Tests
+org.eclipse.wtp.jsf.core.tests=org.eclipse.wtp.jsf.core.tests_0.1.0
+org.eclipse.wtp.jsf.ui.tests=org.eclipse.wtp.jsf.ui.tests_0.1.0
+
+# SWT
+#swt.lib.path=org.eclipse.swt.motif_3.1.0/os/linux/x86
+swt.lib.path=org.eclipse.swt.win32_3.1.0/os/win32/x86
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsf.tests/testScripts/test.xml b/releng.wtpbuilder/distribution/jsf.tests/testScripts/test.xml
new file mode 100644
index 0000000..4bec2a5
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/testScripts/test.xml
@@ -0,0 +1,190 @@
+<project name="Automated Eclipse Testing" default="all"  basedir="." >
+
+	<!--properties file containing the plugin directory name including version number-->
+	<property file="test.properties" />
+
+	<!--properties file containing the build information-->
+	<property file="label.properties" />
+
+	<!--default directory where test-eclipse will be installed-->
+	<property name="install" value="${basedir}" />
+
+	<!--name that can be added to report name to identify which platform tests results come from-->
+	<property name="platform" value="" />
+
+	<!-- The root of the eclipse installation -->
+	<property name="eclipse-home" value="${install}/eclipse" />
+
+	<!-- The path to libary.xml -->
+	<!--property name="library-file" value="${eclipse-home}/plugins/${org.eclipse.test}/library.xml" /-->
+
+	<!-- The directory that will contain the xml and html results from the tests that are run -->
+ 	<property name="results" value="${basedir}/results" />
+
+	<target name="init">
+
+	</target>
+
+	<target name="setup" if="clean" description="Reinstall the test Eclipse installation if specified by user">
+		<!--
+		<delete dir="${install}" />
+		<mkdir dir="${install}" />
+		<exec dir="." executable="unzip">
+			<arg line="-o -qq ../downloads/*.zip -d ${install}"/>
+	    	</exec>
+
+		<exec dir="." executable="unzip">
+			<arg line="-o -qq  wtp-wst-tests-feature*.zip -d ${install}"/>
+    		</exec>
+		-->
+  	</target>
+
+	<target name="runtests" depends="setup" description="Runs ant on the test.xml for a specified plugin.  Requires a property value setting for testPlugin only if test.properties is not available.  The property testPlugin represents a directory name made up of the plugin id and plugin version.  This directory must contain a valid test.xml.">
+		<available file="${eclipse-home}/plugins/${testPlugin}/test.xml" property="test.xml.exists"/>
+		<antcall target="runtests2"/>
+	</target>
+
+	<target name="runtests2" if="test.xml.exists">
+		<antcall target="runtests-normal"/>
+		<!--
+		<antcall target="runtests-runAsPerfApp"/>
+		-->
+		<copy file="${eclipse-home}/${report}.xml" tofile="${results}/xml/${report}_${platform}.xml" failonerror="false" />
+		<antcall target="genHtml" />
+	</target>
+
+	<target name="runtests-normal" unless="runAsPerfApp">
+		<ant antfile="${eclipse-home}/plugins/${testPlugin}/test.xml" dir="${eclipse-home}">
+			<property name="library-file" value="${testDir}/junit-tests.xml"/>
+		</ant>
+		<copy file="${eclipse-home}/${report}.xml" tofile="${results}/xml/${report}_${platform}.xml" failonerror="false" />
+		<antcall target="genHtml" />
+	</target>
+
+	<target name="runtests-runAsPerfApp" if="runAsPerfApp">
+		<ant antfile="${eclipse-home}/plugins/${testPlugin}/test.xml" dir="${eclipse-home}">
+			<property name="library-file" value="${testDir}/performance-tests.xml"/>
+			<property name="runAsPerfApp" value="true"/>
+		</ant>
+		<copy file="${eclipse-home}/${report}.xml" tofile="${results}/xml/${report}_${platform}.xml" failonerror="false" />
+		<antcall target="genHtml" />
+	</target>
+
+	<target name="runperftests">
+		<antcall target="setupPerformance"/>
+		<antcall target="runtests">
+		</antcall>
+	</target>
+	
+	<target name="jsf-tests" description="Runs test.xml for org.eclipse.wtp.jsf.core.tests, org.eclipse.wtp.jsf.ui.tests">
+		<antcall target="runtests">
+			<param name="testPlugin" value="${org.eclipse.wtp.jsf.core.tests}" />
+			<param name="report" value="org.eclipse.wtp.jsf.core.tests" />
+		</antcall>
+		<antcall target="runtests">
+			<param name="testPlugin" value="${org.eclipse.wtp.jsf.ui.tests}" />
+			<param name="report" value="org.eclipse.wtp.jsf.ui.tests" />
+		</antcall>		
+	</target>
+	
+
+	<target name="all" depends="init">
+		<echo message="install=${install}"/>
+		<echo message="eclipse-home=${eclipse-home}"/>
+		
+		<echo message="Starting JSF Tests"/>		
+		<antcall target="jsf-tests" />
+		<echo message="Ended JSF Tests"/>	
+	</target>
+
+	<target name="setupPerformance">
+		<delete dir="${perfDir}"/>
+		<mkdir dir="${perfDir}"/>
+		<ant antfile="buildAll.xml" dir="${build.home}/org.eclipse.wtp.releng" target="getPreReq"/>
+		<ant antfile="buildAll.xml" dir="${build.home}/org.eclipse.wtp.releng" target="setupTestEclipse">
+			<property name="testDir" value="${perfDir}"/>
+		</ant>
+		<ant antfile="buildAll.xml" dir="${build.home}/org.eclipse.wtp.releng" target="setupPerformance"/>
+	</target>
+
+	<target name="performance" depends="init">
+		<!--
+		<antcall target="all">
+			<param name="runAsPerfApp" value="true"/>
+		</antcall>
+		-->
+		<antcall target="wst-common-perfTests"/>
+		<antcall target="wst-wsdl-perfTests"/>
+		<antcall target="wst-server-perfTests" />
+		<antcall target="jst-server-tomcat-perfTests" />
+		<antcall target="jst-jsp-perfTests" />
+		<antcall target="wst-xml-perfTests" />
+		<antcall target="wst-html-perfTests" />
+		<antcall target="wst-css-perfTests" />
+		<antcall target="jst-ws-perfTests"/>
+		<antcall target="wst-xsd-perfTests"/>
+		<antcall target="wst-rdb-perfTests"/>
+		<antcall target="jst-j2ee-perfTests"/>
+		<!--
+		<antcall target="genPerfGraphs" />
+		-->
+	</target>
+
+	<target name="genHtml" description="Generates HTML results with provided JUNIT.XSL provided" unless="genHtml.disable">
+		<style style="JUNIT.XSL" basedir="${results}/xml" destdir="${results}/html" />
+	</target>
+
+	<target name="genPerfGraphs" description="Generates performance graphs">
+		<condition property="osWindows" value="true">
+			<os family="windows" />
+		</condition>
+		<condition property="java.library.path" value="${eclipseBuilderDirectory}/swt-win32">
+			<os family="windows" />
+		</condition>
+		<condition property="swt.library.path" value="${eclipseBuilderDirectory}/swt-linux-motif">
+			<os family="unix" />
+		</condition>
+		<antcall target="genPerfGraphsWindows"/>
+		<antcall target="genPerfGraphsLinux"/>
+	</target>
+
+	<target name="genPerfGraphsWindows" if="osWindows">
+		<java classname="org.eclipse.test.performance.ui.Main" fork="true" maxmemory="256m">
+			<arg line="-baseline ${perf.ref.buildId} -current ${perf.buildId} -jvm ${perf.jvm} -config ${perf.config} -config.properties ${perf.config},${perf.config},${perf.config},${results}/graph/${perf.config} -output ${results}/graph"/>
+			<classpath>
+				<fileset dir="${eclipseBuilderDirectory}/plugins">
+					<exclude name="**/*swt.motif*.jar"/>
+					<exclude name="**/*swt.gtk*.jar"/>
+					<include name="**/*.jar"/>
+				</fileset>
+				<fileset dir="${build.home}/${cloudscapeLib}">
+					<include name="**/*.jar"/>
+				</fileset>
+			</classpath>
+			<env key="LD_LIBRARY_PATH" value="${eclipseBuilderDirectory}/swt-win32"/>
+			<sysproperty key="PLUGIN_PATH" value="${eclipseBuilderDirectory}/plugins/org.eclipse.test.performance.ui"/>
+			<sysproperty key="eclipse.perf.dbloc" value="${build.home}/${perf.dbloc}"/>
+			<sysproperty key="java.library.path" value="${eclipseBuilderDirectory}/swt-win32"/>
+		</java>
+	</target>
+
+	<target name="genPerfGraphsLinux" unless="osWindows">
+		<java classname="org.eclipse.test.performance.ui.Main" fork="true" maxmemory="256m">
+			<arg line="-baseline ${perf.ref.buildId} -current ${perf.buildId} -jvm ${perf.jvm} -config ${perf.config} -config.properties ${perf.config},${perf.config},${perf.config},${results}/graph/${perf.config} -output ${results}/graph"/>
+			<classpath>
+				<fileset dir="${eclipseBuilderDirectory}/plugins">
+					<exclude name="**/*swt.win32*.jar"/>
+					<include name="**/*.jar"/>
+				</fileset>
+				<fileset dir="${build.home}/${cloudscapeLib}">
+					<include name="**/*.jar"/>
+				</fileset>
+			</classpath>
+			<env key="LD_LIBRARY_PATH" value="${eclipseBuilderDirectory}/swt-linux-motif"/>
+			<sysproperty key="PLUGIN_PATH" value="${eclipseBuilderDirectory}/plugins/org.eclipse.test.performance.ui"/>
+			<sysproperty key="eclipse.perf.dbloc" value="${build.home}/${perf.dbloc}"/>
+			<sysproperty key="java.library.path" value="${eclipseBuilderDirectory}/swt-linux-motif"/>
+		</java>
+	</target>
+
+</project>
diff --git a/releng.wtpbuilder/distribution/jsf.tests/testdependency.xml b/releng.wtpbuilder/distribution/jsf.tests/testdependency.xml
new file mode 100644
index 0000000..2e88202
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsf.tests/testdependency.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!-- ====================================================================== 
+    Properties that must be passed to this script:
+    base.install.dir
+	dependencyTargets
+	local.cache.dir
+	dependency.properties
+	baseos
+	basews
+	basearch
+                                                               
+     ====================================================================== -->
+<project name="test" default="get">
+
+	<target name="get">
+
+		<antcall target="getAndInstall">
+			<param name="groupId" value="wtp" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="emf" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="gef" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="jem" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="eclipse" />
+		</antcall>
+		<antcall target="getAndInstall">
+			<param name="groupId" value="eclipseTestFramework" />
+		</antcall>		
+		
+	</target>
+
+	<target name="getAndInstall">
+
+	    <echo message="dependencyTargets: ${dependencyTargets}" />
+	    <echo message="groupId: ${groupId}" />
+	
+		<ant antfile="${dependencyTargets}" target="checkDependency">
+			<property name="groupId" value="${groupId}" />
+		</ant>
+		<ant antfile="${dependencyTargets}" target="installDependency">
+			<property name="groupId" value="${groupId}" />
+			<property name="install.destination" value="${base.install.dir}" />
+		</ant>
+	</target>
+
+</project>
+