add jsdt as seperate build
diff --git a/releng.wtpbuilder/buildtemplates/build.xml b/releng.wtpbuilder/buildtemplates/build.xml
index 9e7285b..27438bd 100644
--- a/releng.wtpbuilder/buildtemplates/build.xml
+++ b/releng.wtpbuilder/buildtemplates/build.xml
@@ -6,6 +6,8 @@
         which accompanies this distribution, and is available at
         http://www.eclipse.org/legal/epl-v10.html Contributors: IBM
         Corporation - initial API and implementation
+        
+        Remember, this script, in workbench, should be ran in "same vm as workspace".
     -->
 <project
     name="project"
@@ -20,7 +22,7 @@
     -->
     <property
         name="componentpropertyfile"
-        value="pave.properties"/>
+        value="jsdt.properties"/>
     <property
         file="${componentpropertyfile}"/>
     <!--
diff --git a/releng.wtpbuilder/components/jsdt-sdk/customTargets.xml b/releng.wtpbuilder/components/jsdt-sdk/customTargets.xml
deleted file mode 100644
index 4d886dc..0000000
--- a/releng.wtpbuilder/components/jsdt-sdk/customTargets.xml
+++ /dev/null
@@ -1,277 +0,0 @@
-<project
-    name="PDECustomTargets"
-    default="noDefault"
-    basedir=".">
-
-  <!-- = = = standard properties pattern = = = 
-
-      Note to be cross-platform, "environment variables" are only appropriate for 
-      some variables, e.g. ones we set, since properties are case sensitive, even if 
-      the environment variables on your operating system are not, e.g. it will 
-      be ${env.Path} not ${env.PATH} on Windows -->
-  <property environment="env" />
-
-  <!-- 
-      Let users override standard properties, if desired.
-      If directory, file, or some properties do not exist,  
-      then standard properties will be used.
-  -->
-  <property
-      file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties" />
-
-  <!-- let this project specify properties, if not already set -->
-  <property file="build.properties" />
-
-    <fail
-        unless="buildDirectory"
-        message="buildDirectory must be set" />
-    <echo message="buildDirectory: ${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
-            level="info"
-            message="Target:${target} " />
-        <echo
-            level="debug"
-            message="basedir: ${basedir}" />
-        <echo
-            level="info"
-            message="component: ${component}" />
-        <echo
-            level="debug"
-            message="buildDirectory: ${buildDirectory}" />
-        <echo
-            level="debug"
-            message="baseLocation: ${baseLocation}" />
-        <echo
-            level="debug"
-            message="generic target: ${genericTargets}" />
-      <echo
-          message="compilerArg: ${compilerArg}" />
-      <echo
-          message="individualSourceBundles: ${individualSourceBundles}" />
-        <ant
-            antfile="${genericTargets}"
-            target="${target}">
-            <property
-                name="type"
-                value="feature" />
-            <property
-                name="id"
-                value="org.eclipse.wst.jsdt_sdk.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.wst.jsdt_sdk.feature">
-        <property
-            name="archiveName"
-            value="wtp-jsdt-sdk-${buildLabel}.zip" />
-        <ant
-            antfile="${assembleScriptName}"
-            dir="${buildDirectory}" />
-    </target>
-
-    <target name="prePackage" />
-
-    <target name="postPackage">
-
-        <property
-            name="archiveName"
-            value="wtp-jsdt-sdk-${buildLabel}.zip" />
-
-        <ant
-            antfile="${wtp.builder.home}/scripts/build/buildutilities.xml"
-            target="unpackUpdateJarsAndCreateZippedPackages">
-            <property
-                name="buildDirectory"
-                value="${buildDirectory}" />
-            <property
-                name="buildLabel"
-                value="${buildLabel}" />
-            <property
-                name="archiveName"
-                value="${archiveName}" />
-        </ant>
-
-    </target>
-
-   <!-- 
-        Check out map files from repository
-    -->
-    <target name="getMapFiles">
-
-        <!-- for now, get all, at once. May componetize later. -->
-
-        <ant
-            antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
-            target="fetchAllMaps" />
-
-    </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
-            level="debug"
-            message="ant.file: ${ant.file}" />
-        <echo
-            level="debug"
-            message="component.dir: ${component.dir}" />
-
-        <ant
-            antfile="${component.dir}/dependency.xml"
-            target="get">
-            <property
-                name="dependency.properties"
-                value="${buildDirectory}/maps/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties" />
-            <property
-                name="base.install.dir"
-                value="${buildRoot}" />
-        </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">
-        <echo message="buildDirectory: ${buildDirectory}" />
-        <customizeAccessRules
-            bundleDirectory="${buildDirectory}/plugins" />
-    </target>
-
-
-
-    <!-- 
-      Steps to do before running the build.xmls for the elements being built.
-    -->
-    <target name="preProcess">
-        <replace
-            dir="${buildDirectory}/plugins"
-            value="${timestamp}"
-            token="@build@">
-            <include name="**/about.mappings" />
-        </replace>
-    </target>
-
-    <!--
-      Steps to do after running the build.xmls for the elements being built.
-    -->
-    <target name="postProcess">
-        <condition property="logsAvailable">
-            <istrue value="${javacVerbose}" />
-        </condition>
-        <antcall target="gatherLogs" />
-    </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"></target>
-
-    <!--
-      Steps to do to test the build results
-    -->    
-    <target name="test"></target>
-
-    <!--
-      Steps to do to publish the build results
-    -->
-    <target name="publish"></target>
-
-    <!--
-      Helper targets
-    -->
-    <target
-        name="gatherLogs"
-        if="logsAvailable">
-        <mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
-        <echo
-            level="debug"
-            message="logExtension: ${logExtension}" />
-        <antcall target="allElements">
-            <param
-                name="target"
-                value="gatherLogs" />
-            <param
-                name="logExtension"
-                value="${logExtension}" />
-        </antcall>
-        <unzip
-            dest="${buildDirectory}/${buildLabel}/compilelogs"
-            overwrite="true">
-            <fileset
-                dir="${buildDirectory}/features/org.eclipse.wst.jsdt_sdk.feature">
-                <include name="**/*.log.zip" />
-            </fileset>
-        </unzip>
-
-
-    </target>
-
-    <target
-        name="clean"
-        unless="noclean">
-        <antcall target="allElements">
-            <param
-                name="target"
-                value="cleanElement" />
-        </antcall>
-    </target>
-
-    <!--
-      Default target 
-    -->
-    <target name="noDefault">
-        <echo
-            level="error"
-            message="You must specify a target when invoking this file" />
-    </target>
-
-</project>
diff --git a/releng.wtpbuilder/components/jsdt-sdk/dependency.xml b/releng.wtpbuilder/components/jsdt-sdk/dependency.xml
deleted file mode 100644
index 54fa69e..0000000
--- a/releng.wtpbuilder/components/jsdt-sdk/dependency.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<!-- ====================================================================== 
-    Properties that must be passed to this script:
-    base.install.dir
-    dependencyTargets
-    local.cache.dir
-    dependency.properties
-    
-    ====================================================================== -->
-<project
-    name="test"
-    default="get">
-
-    <target name="get">
-
-
-        <mkdir dir="${buildDirectory}/maps/${env.RELENG}/maps" />
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="orbitthirdpartymap" />
-            <param
-                name="base.install.dir"
-                value="${buildDirectory}/maps/${env.RELENG}/maps/" />
-        </antcall>
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="eclipse" />
-        </antcall>
-
-    </target>
-
-
-    <target name="getAndInstall">
-        <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/components/jsdt.tests/customTargets.xml b/releng.wtpbuilder/components/jsdt.tests/customTargets.xml
deleted file mode 100644
index f307106..0000000
--- a/releng.wtpbuilder/components/jsdt.tests/customTargets.xml
+++ /dev/null
@@ -1,281 +0,0 @@
-<project
-    name="PDECustomTargets"
-    default="noDefault"
-    basedir=".">
-
-  <!-- = = = standard properties pattern = = = 
-
-      Note to be cross-platform, "environment variables" are only appropriate for 
-      some variables, e.g. ones we set, since properties are case sensitive, even if 
-      the environment variables on your operating system are not, e.g. it will 
-      be ${env.Path} not ${env.PATH} on Windows -->
-  <property environment="env" />
-
-  <!-- 
-      Let users override standard properties, if desired.
-      If directory, file, or some properties do not exist,  
-      then standard properties will be used.
-  -->
-  <property
-      file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties" />
-
-  <!-- let this project specify properties, if not already set -->
-  <property file="build.properties" />
-
-    <fail
-        unless="buildDirectory"
-        message="buildDirectory must be set" />
-    <echo message="buildDirectory: ${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
-            level="info"
-            message="Target:${target} " />
-        <echo
-            level="debug"
-            message="basedir: ${basedir}" />
-        <echo
-            level="info"
-            message="component: ${component}" />
-        <echo
-            level="debug"
-            message="buildDirectory: ${buildDirectory}" />
-        <echo
-            level="debug"
-            message="baseLocation: ${baseLocation}" />
-        <echo
-            level="debug"
-            message="generic target: ${genericTargets}" />
-      <echo
-          message="compilerArg: ${compilerArg}" />
-      <echo
-          message="individualSourceBundles: ${individualSourceBundles}" />
-        <ant
-            antfile="${genericTargets}"
-            target="${target}">
-            <property
-                name="type"
-                value="feature" />
-            <property
-                name="id"
-                value="org.eclipse.wst.jsdt_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.wst.jsdt_tests.feature">
-        <property
-            name="archiveName"
-            value="wtp-jsdt-Automated-Tests-${buildLabel}.zip" />
-        <ant
-            antfile="${assembleScriptName}"
-            dir="${buildDirectory}" />
-
-    </target>
-
-    <target name="prePackage" />
-
-
-    <target name="postPackage">
-
-        <property
-            name="archiveName"
-            value="wtp-jsdt-Automated-Tests-${buildLabel}.zip" />
-
-        <ant
-            antfile="${wtp.builder.home}/scripts/build/buildutilities.xml"
-            target="unpackUpdateJarsAndCreateZippedPackages">
-            <property
-                name="buildDirectory"
-                value="${buildDirectory}" />
-            <property
-                name="buildLabel"
-                value="${buildLabel}" />
-            <property
-                name="archiveName"
-                value="${archiveName}" />
-        </ant>
-
-    </target>
-
-   <!-- 
-        Check out map files from repository
-    -->
-    <target name="getMapFiles">
-
-        <!-- for now, get all, at once. May componetize later. -->
-
-        <ant
-            antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
-            target="fetchAllMaps" />
-
-    </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
-            level="debug"
-            message="ant.file: ${ant.file}" />
-        <echo
-            level="debug"
-            message="component.dir: ${component.dir}" />
-
-        <ant
-            antfile="${component.dir}/dependency.xml"
-            target="get">
-            <property
-                name="dependency.properties"
-                value="${buildDirectory}/maps/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties" />
-            <property
-                name="base.install.dir"
-                value="${buildRoot}" />
-        </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">
-        <echo message="buildDirectory: ${buildDirectory}" />
-        <customizeAccessRules
-            bundleDirectory="${buildDirectory}/plugins"/>
-    </target>
-
-
-
-    <!-- 
-      Steps to do before running the build.xmls for the elements being built.
-    -->
-    <target name="preProcess">
-        <replace
-            dir="${buildDirectory}/plugins"
-            value="${timestamp}"
-            token="@build@">
-            <include name="**/about.mappings" />
-        </replace>
-    </target>
-
-    <!--
-      Steps to do after running the build.xmls for the elements being built.
-    -->
-    <target name="postProcess">
-        <condition property="logsAvailable">
-            <istrue value="${javacVerbose}" />
-        </condition>
-        <antcall target="gatherLogs" />
-    </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"></target>
-
-    <!--
-      Steps to do to test the build results
-    -->    
-    <target name="test"></target>
-
-    <!--
-      Steps to do to publish the build results
-    -->
-    <target name="publish"></target>
-
-    <!--
-      Helper targets
-    -->
-    <target
-        name="gatherLogs"
-        if="logsAvailable">
-        <mkdir dir="${buildDirectory}/${buildLabel}/testcompilelogs" />
-        <echo
-            level="debug"
-            message="logExtension: ${logExtension}" />
-        <antcall target="allElements">
-            <param
-                name="target"
-                value="gatherLogs" />
-            <param
-                name="logExtension"
-                value="${logExtension}" />
-        </antcall>
-        <unzip
-            dest="${buildDirectory}/${buildLabel}/testcompilelogs"
-            overwrite="true">
-            <fileset
-                dir="${buildDirectory}/features/org.eclipse.wst.jsdt.tests">
-                <include name="**/*.log.zip" />
-            </fileset>
-        </unzip>
-
-
-
-    </target>
-
-    <target
-        name="clean"
-        unless="noclean">
-        <antcall target="allElements">
-            <param
-                name="target"
-                value="cleanElement" />
-        </antcall>
-    </target>
-
-    <!--
-      Default target 
-    -->
-    <target name="noDefault">
-        <echo
-            level="error"
-            message="You must specify a target when invoking this file" />
-    </target>
-
-</project>
diff --git a/releng.wtpbuilder/components/jsdt.tests/dependency.xml b/releng.wtpbuilder/components/jsdt.tests/dependency.xml
deleted file mode 100644
index b851249..0000000
--- a/releng.wtpbuilder/components/jsdt.tests/dependency.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<!-- ====================================================================== 
-    Properties that must be passed to this script:
-    base.install.dir
-    dependencyTargets
-    local.cache.dir
-    dependency.properties
-    
-    
-    ====================================================================== -->
-<project
-    name="test"
-    default="get">
-
-    <target name="get">
-
-
-        <mkdir dir="${buildDirectory}/maps/${env.RELENG}/maps" />
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="orbitthirdpartymap" />
-            <param
-                name="base.install.dir"
-                value="${buildDirectory}/maps/${env.RELENG}/maps/" />
-        </antcall>
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="emf" />
-        </antcall>
-                  <antcall target="getAndInstall">
-                      <param
-                          name="groupId"
-                          value="emfxsd" />
-                  </antcall>                	
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="gef" />
-        </antcall>
-
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="dtp" />
-        </antcall>
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="eclipse" />
-        </antcall>
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="eclipseTestFramework" />
-        </antcall>
-
-    </target>
-
-
-    <target name="getAndInstall">
-        <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/components/jsdt/build.properties b/releng.wtpbuilder/components/jsdt/build.properties
index 99b50ed..1232026 100644
--- a/releng.wtpbuilder/components/jsdt/build.properties
+++ b/releng.wtpbuilder/components/jsdt/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
+# Copyright (c) 2003, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials 
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -35,3 +35,11 @@
 javacVerbose=true
 
 sign=true
+
+#############################################################
+
+# Properties introduced in 3.5 M3 (PDE base builder R35_M2). See
+# http://aniefer.blogspot.com/2008/10/sorting-bundles-and-parallel.html
+
+flattenDependencies=true
+parallelCompilation=true
diff --git a/releng.wtpbuilder/components/jsdt/customTargets.xml b/releng.wtpbuilder/components/jsdt/customTargets.xml
index a1b3fc2..133bfde 100644
--- a/releng.wtpbuilder/components/jsdt/customTargets.xml
+++ b/releng.wtpbuilder/components/jsdt/customTargets.xml
@@ -2,229 +2,269 @@
     name="PDECustomTargets"
     default="noDefault"
     basedir=".">
+    <!--
+        = = = standard properties pattern = = = Note to be
+        cross-platform, "environment variables" are only appropriate for
+        some variables, e.g. ones we set, since properties are case
+        sensitive, even if the environment variables on your operating
+        system are not, e.g. it will be ${env.Path} not ${env.PATH} on
+        Windows
+    -->
+    <property
+        environment="env"/>
+    <!--
+        Let users override standard properties, if desired. If
+        directory, file, or some properties do not exist, then standard
+        properties will be used.
+    -->
+    <property
+        file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties"/>
 
-  <!-- = = = standard properties pattern = = = 
-
-      Note to be cross-platform, "environment variables" are only appropriate for 
-      some variables, e.g. ones we set, since properties are case sensitive, even if 
-      the environment variables on your operating system are not, e.g. it will 
-      be ${env.Path} not ${env.PATH} on Windows -->
-  <property environment="env" />
-
-  <!-- 
-      Let users override standard properties, if desired.
-      If directory, file, or some properties do not exist,  
-      then standard properties will be used.
-  -->
-  <property
-      file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties" />
-
-  <!-- let this project specify properties, if not already set -->
-  <property file="build.properties" />
-
+    <!-- let this project specify properties, if not already set -->
+    <property
+        file="build.properties"/>
+    <fail
+        message="dependency.properties must be specified by distribution script"
+        unless="dependency.properties"/>
     <fail
         unless="buildDirectory"
-        message="buildDirectory must be set" />
-    <echo message="buildDirectory: ${buildDirectory}" />
-
-    <!-- 
-        Run a given ${target} on all elements being built
-        Add on <ant> task for each top level element being built.
+        message="buildDirectory must be set"/>
+    <echo
+        message="buildDirectory: ${buildDirectory}"/>
+    <!--
+        Run a given ${target} on all elements being built Add on <ant>
+        task for each top level element being built.
     -->
-    <target name="allElements">
+    <target
+        name="allElements">
         <echo
             level="info"
-            message="Target:${target} " />
+            message="Target:${target} "/>
         <echo
             level="debug"
-            message="basedir: ${basedir}" />
+            message="basedir: ${basedir}"/>
         <echo
             level="info"
-            message="component: ${component}" />
+            message="component: ${component}"/>
         <echo
             level="debug"
-            message="buildDirectory: ${buildDirectory}" />
+            message="buildDirectory: ${buildDirectory}"/>
         <echo
             level="debug"
-            message="baseLocation: ${baseLocation}" />
+            message="baseLocation: ${baseLocation}"/>
         <echo
             level="debug"
-            message="generic target: ${genericTargets}" />
-      <echo
-          message="compilerArg: ${compilerArg}" />
-      <echo
-          message="individualSourceBundles: ${individualSourceBundles}" />
+            message="generic target: ${genericTargets}"/>
+        <echo
+            message="compilerArg: ${compilerArg}"/>
+        <echo
+            message="individualSourceBundles: ${individualSourceBundles}"/>
         <ant
             antfile="${genericTargets}"
             target="${target}">
             <property
                 name="type"
-                value="feature" />
+                value="feature"/>
             <property
                 name="id"
-                value="org.eclipse.wst.jsdt.feature" />
+                value="org.eclipse.wst.jsdt.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 
+    <!--
+        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.wst.jsdt.feature">
+    <target
+        name="assemble.org.eclipse.wst.jsdt.feature">
         <property
             name="archiveName"
-            value="wtp-jsdt-${buildLabel}.zip" />
+            value="wtp-jsdt-${buildLabel}.zip"/>
         <ant
             antfile="${assembleScriptName}"
-            dir="${buildDirectory}" />
-
+            dir="${buildDirectory}"/>
     </target>
-
-    <target name="prePackage" />
-
-    <target name="postPackage">
-
+    <target
+        name="prePackage"/>
+    <target
+        name="postPackage">
         <property
             name="archiveName"
-            value="wtp-jsdt-${buildLabel}.zip" />
-
+            value="wtp-jsdt-${buildLabel}.zip"/>
         <ant
             antfile="${wtp.builder.home}/scripts/build/buildutilities.xml"
             target="unpackUpdateJarsAndCreateZippedPackages">
             <property
                 name="buildDirectory"
-                value="${buildDirectory}" />
+                value="${buildDirectory}"/>
             <property
                 name="buildLabel"
-                value="${buildLabel}" />
+                value="${buildLabel}"/>
             <property
                 name="archiveName"
-                value="${archiveName}" />
+                value="${archiveName}"/>
         </ant>
-
     </target>
 
-   <!-- 
+    <!-- 
         Check out map files from repository
     -->
-    <target name="getMapFiles">
-
-        <!-- for now, get all, at once. May componetize later. -->
-
+    <target
+        name="getMapFiles">
         <ant
             antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
-            target="fetchAllMaps" />
-
+            target="maputil">
+            <property
+                name="mapcomponent"
+                value="${env.RELENG}"/>
+            <property
+                name="mapTag"
+                value="${mapVersionTag}"/>
+        </ant>
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
+            target="maputil">
+            <property
+                name="mapcomponent"
+                value="${env.RELENGSOURCEEDITING}"/>
+            <property
+                name="mapTag"
+                value="${mapVersionTag}"/>
+        </ant>
     </target>
 
 
     <!-- 
         Steps to do before setup
     -->
-    <target name="preSetup"></target>
-
+    <target
+        name="preSetup"></target>
     <!--
-      Steps to do after setup but before starting the build proper
+        Steps to do after setup but before starting the build proper
     -->
-    <target name="postSetup">
+    <target
+        name="postSetup">
         <dirname
             file="${ant.file}"
-            property="component.dir" />
+            property="component.dir"/>
         <echo
             level="debug"
-            message="ant.file: ${ant.file}" />
+            message="ant.file: ${ant.file}"/>
         <echo
             level="debug"
-            message="component.dir: ${component.dir}" />
+            message="component.dir: ${component.dir}"/>
 
+        <!-- Get the dependencies -->
+        <antcall
+            target="getDependencies"/>
+    </target>
+    <!--
+        =====================================================================
+    -->
+    <!-- Get the dependencies based on releng maps -->
+    <!--
+        =====================================================================
+    -->
+    <target
+        name="getDependencies">
         <ant
             antfile="${component.dir}/dependency.xml"
             target="get">
             <property
-                name="dependency.properties"
-                value="${buildDirectory}/maps/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties" />
-            <property
                 name="base.install.dir"
-                value="${buildRoot}" />
+                value="${buildRoot}"/>
         </ant>
     </target>
 
     <!--
       Steps to do before fetching the build elements
     -->
-    <target name="preFetch"></target>
+    <target
+        name="preFetch"></target>
 
     <!-- 
       Steps to do after fetching the build elements
     -->
-    <target name="postFetch"></target>
+    <target
+        name="postFetch"></target>
 
     <!--
       Steps to do before generating the build scripts.
     -->
-   <target name="preGenerate"></target>
-   
+    <target
+        name="preGenerate"></target>
+
     <!--
       Steps to do after generating the build scripts.
     -->
-    <target name="postGenerate">
-        <echo message="buildDirectory: ${buildDirectory}" />
+    <target
+        name="postGenerate">
+        <echo
+            message="buildDirectory: ${buildDirectory}"/>
         <customizeAccessRules
-            bundleDirectory="${buildDirectory}/plugins" />
+            bundleDirectory="${buildDirectory}/plugins"/>
     </target>
-
-
-
-    <!-- 
-      Steps to do before running the build.xmls for the elements being built.
+    <!--
+        Steps to do before running the build.xmls for the elements being
+        built.
     -->
-    <target name="preProcess">
+    <target
+        name="preProcess">
         <replace
             dir="${buildDirectory}/plugins"
             value="${timestamp}"
             token="@build@">
-            <include name="**/about.mappings" />
+            <include
+                name="**/about.mappings"/>
         </replace>
     </target>
-
     <!--
-      Steps to do after running the build.xmls for the elements being built.
+        Steps to do after running the build.xmls for the elements being
+        built.
     -->
-    <target name="postProcess">
-        <condition property="logsAvailable">
-            <istrue value="${javacVerbose}" />
+    <target
+        name="postProcess">
+        <condition
+            property="logsAvailable">
+            <istrue
+                value="${javacVerbose}"/>
         </condition>
-        <antcall target="gatherLogs" />
+        <antcall
+            target="gatherLogs"/>
     </target>
 
 
     <!--
-    	Steps to do before running assemble. 
+      Steps to do before running assemble. 
     -->
-    <target name="preAssemble"></target>
+    <target
+        name="preAssemble"></target>
 
     <!--
       Steps to do after  running assemble.
     -->
-    <target name="postAssemble"></target>
+    <target
+        name="postAssemble"></target>
 
     <!--
       Steps to do after the build is done.
     -->
-    <target name="postBuild"></target>
+    <target
+        name="postBuild"></target>
 
     <!--
       Steps to do to test the build results
-    -->    
-    <target name="test"></target>
+    -->
+    <target
+        name="test"></target>
 
     <!--
       Steps to do to publish the build results
     -->
-    <target name="publish"></target>
+    <target
+        name="publish"></target>
 
     <!--
       Helper targets
@@ -232,46 +272,48 @@
     <target
         name="gatherLogs"
         if="logsAvailable">
-        <mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
+        <mkdir
+            dir="${buildDirectory}/${buildLabel}/compilelogs"/>
         <echo
             level="debug"
-            message="logExtension: ${logExtension}" />
-        <antcall target="allElements">
+            message="logExtension: ${logExtension}"/>
+        <antcall
+            target="allElements">
             <param
                 name="target"
-                value="gatherLogs" />
+                value="gatherLogs"/>
             <param
                 name="logExtension"
-                value="${logExtension}" />
+                value="${logExtension}"/>
         </antcall>
         <unzip
             dest="${buildDirectory}/${buildLabel}/compilelogs"
             overwrite="true">
-            <fileset 
+            <fileset
                 dir="${buildDirectory}/features/org.eclipse.wst.jsdt.feature">
-                <include name="**/*.log.zip" />
+                <include
+                    name="**/*.log.zip"/>
             </fileset>
         </unzip>
-
     </target>
-
     <target
         name="clean"
         unless="noclean">
-        <antcall target="allElements">
+        <antcall
+            target="allElements">
             <param
                 name="target"
-                value="cleanElement" />
+                value="cleanElement"/>
         </antcall>
     </target>
 
     <!--
       Default target 
     -->
-    <target name="noDefault">
+    <target
+        name="noDefault">
         <echo
             level="error"
-            message="You must specify a target when invoking this file" />
+            message="You must specify a target when invoking this file"/>
     </target>
-
-</project>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/components/jsdt/dependency.xml b/releng.wtpbuilder/components/jsdt/dependency.xml
index 6866693..fb2b725 100644
--- a/releng.wtpbuilder/components/jsdt/dependency.xml
+++ b/releng.wtpbuilder/components/jsdt/dependency.xml
@@ -1,99 +1,86 @@
 <?xml version="1.0"?>
-<!-- ====================================================================== 
-    Properties that must be passed to this script:
-    base.install.dir
-    dependencyTargets
-    local.cache.dir
-    dependency.properties
-    
-    
-    ====================================================================== -->
+    <!--
+        ======================================================================
+        Properties that must be passed to this script: base.install.dir
+        dependencyTargets local.cache.dir dependency.properties
+        ======================================================================
+    -->
 <project
     name="test"
     default="get">
-
-    <target name="get">
-
-        <mkdir dir="${buildDirectory}/maps/${env.RELENG}/maps" />
-        <antcall target="getAndInstall">
-            <param
-                name="groupId"
-                value="orbitthirdpartymap" />
-            <param
-                name="base.install.dir"
-                value="${buildDirectory}/maps/${env.RELENG}/maps/" />
-        </antcall>
-
-
+    <target
+        name="get">
+        <!--
+            read in this properties, just so we can make sure our
+            requested pre-reqs are defined, which we do later with
+            statements such if="${groupId}.url"
+        -->
         <property
-            name="pde.builder.path"
-            value="${env.BASE_BUILDERS}/${eclipse.builder.version}/${eclipse.builder}" />
-        <echo
-            level="info"
-            message="pde.builder.path: ${pde.builder.path}" />
-        <echo
-            level="info"
-            message="eclipse.builder.version: ${eclipse.builder.version}" />
-        <echo
-            level="info"
-            message="eclipse.builder: ${eclipse.builder}" />
-
-
-        <antcall target="getAndInstall">
+            file="${dependency.properties}"/>
+        <antcall
+            target="getAndInstall">
             <param
                 name="groupId"
-                value="emf" />
+                value="emf"/>
         </antcall>
-          <antcall target="getAndInstall">
-              <param
-                  name="groupId"
-                  value="emfxsd" />
-          </antcall>        	
-        <antcall target="getAndInstall">
+        <antcall
+            target="getAndInstall">
             <param
                 name="groupId"
-                value="gef" />
+                value="emfxsd"/>
         </antcall>
-
-        <antcall target="getAndInstall">
+       <antcall
+           target="getAndInstall">
+           <param
+               name="groupId"
+               value="emfvalidation"/>
+       </antcall>
+       <antcall
+            target="getAndInstall">
             <param
                 name="groupId"
-                value="eclipse" />
+                value="gef"/>
         </antcall>
-        <antcall target="getAndInstall">
+        <antcall
+            target="getAndInstall">
             <param
                 name="groupId"
-                value="eclipseTestFramework" />
+                value="eclipse"/>
         </antcall>
-        <antcall target="getAndInstall">
+        
+        <antcall 
+            target="getAndInstall"> 
+            <param 
+                 name="groupId"
+                 value="dtp"/> 
+        </antcall>
+        
+        <antcall
+            target="getAndInstall">
             <param
                 name="groupId"
-                value="dita" />
+                value="eclipse"/>
         </antcall>
-
-
     </target>
-
-
-    <target name="getAndInstall">
+    <target
+        name="getAndInstall"
+        if="${groupId}.url">
         <ant
             antfile="${dependencyTargets}"
             target="checkDependency">
             <property
                 name="groupId"
-                value="${groupId}" />
+                value="${groupId}"/>
         </ant>
         <ant
             antfile="${dependencyTargets}"
             target="installDependency">
             <property
                 name="groupId"
-                value="${groupId}" />
+                value="${groupId}"/>
             <property
                 name="install.destination"
-                value="${base.install.dir}" />
+                value="${base.install.dir}"/>
         </ant>
     </target>
-
-</project>
-
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/components/jsdt-sdk/build.properties b/releng.wtpbuilder/components/jsdt_sdk/build.properties
similarity index 82%
rename from releng.wtpbuilder/components/jsdt-sdk/build.properties
rename to releng.wtpbuilder/components/jsdt_sdk/build.properties
index 9b2e603..fef57d7 100644
--- a/releng.wtpbuilder/components/jsdt-sdk/build.properties
+++ b/releng.wtpbuilder/components/jsdt_sdk/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
+# Copyright (c) 2003, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials 
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -17,12 +17,12 @@
 # Set collectingFolder and archivePrefix to . if you want to create archives without
 # trailing eclipse in the paths of the included files
 collectingFolder=eclipse
-
+logExtension=.xml
 # 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
-logExtension=.xml
+
 # Whether or not to include debug info in the output jars
 javacDebugInfo=true 
 
@@ -35,3 +35,11 @@
 javacVerbose=true
 
 sign=true
+
+#############################################################
+
+# Properties introduced in 3.5 M3 (PDE base builder R35_M2). See
+# http://aniefer.blogspot.com/2008/10/sorting-bundles-and-parallel.html
+
+flattenDependencies=true
+parallelCompilation=true
\ No newline at end of file
diff --git a/releng.wtpbuilder/components/jsdt_sdk/customTargets.xml b/releng.wtpbuilder/components/jsdt_sdk/customTargets.xml
new file mode 100644
index 0000000..f8b8a97
--- /dev/null
+++ b/releng.wtpbuilder/components/jsdt_sdk/customTargets.xml
@@ -0,0 +1,319 @@
+<project
+    name="PDECustomTargets"
+    default="noDefault"
+    basedir=".">
+    <!--
+        = = = standard properties pattern = = = Note to be
+        cross-platform, "environment variables" are only appropriate for
+        some variables, e.g. ones we set, since properties are case
+        sensitive, even if the environment variables on your operating
+        system are not, e.g. it will be ${env.Path} not ${env.PATH} on
+        Windows
+    -->
+    <property
+        environment="env"/>
+    <!--
+        Let users override standard properties, if desired. If
+        directory, file, or some properties do not exist, then standard
+        properties will be used.
+    -->
+    <property
+        file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties"/>
+
+    <!-- let this project specify properties, if not already set -->
+    <property
+        file="build.properties"/>
+    <fail
+        message="dependency.properties must be specified by distribution script"
+        unless="dependency.properties"/>
+    <fail
+        unless="buildDirectory"
+        message="buildDirectory must be set"/>
+    <echo
+        message="buildDirectory: ${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
+            level="info"
+            message="Target:${target} "/>
+        <echo
+            level="debug"
+            message="basedir: ${basedir}"/>
+        <echo
+            level="info"
+            message="component: ${component}"/>
+        <echo
+            level="debug"
+            message="buildDirectory: ${buildDirectory}"/>
+        <echo
+            level="debug"
+            message="baseLocation: ${baseLocation}"/>
+        <echo
+            level="debug"
+            message="generic target: ${genericTargets}"/>
+        <echo
+            message="compilerArg: ${compilerArg}"/>
+        <echo
+            message="individualSourceBundles: ${individualSourceBundles}"/>
+        <ant
+            antfile="${genericTargets}"
+            target="${target}">
+            <property
+                name="type"
+                value="feature"/>
+            <property
+                name="id"
+                value="org.eclipse.wst.jsdt_sdk.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.wst.jsdt_sdk.feature">
+        <property
+            name="archiveName"
+            value="wtp-jsdt-sdk-${buildLabel}.zip"/>
+        <ant
+            antfile="${assembleScriptName}"
+            dir="${buildDirectory}"/>
+    </target>
+    <target
+        name="prePackage"/>
+    <target
+        name="postPackage">
+        <property
+            name="archiveName"
+            value="wtp-jsdt-sdk-${buildLabel}.zip"/>
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/buildutilities.xml"
+            target="unpackUpdateJarsAndCreateZippedPackages">
+            <property
+                name="buildDirectory"
+                value="${buildDirectory}"/>
+            <property
+                name="buildLabel"
+                value="${buildLabel}"/>
+            <property
+                name="archiveName"
+                value="${archiveName}"/>
+        </ant>
+    </target>
+
+    <!--
+        Check out map files from repository
+        -->
+    <target
+        name="getMapFiles">
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
+            target="maputil">
+            <property
+                name="mapcomponent"
+                value="${env.RELENG}"/>
+            <property
+                name="mapTag"
+                value="${mapVersionTag}"/>
+        </ant>
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
+            target="maputil">
+            <property
+                name="mapcomponent"
+                value="${env.RELENGSOURCEEDITING}"/>
+            <property
+                name="mapTag"
+                value="${mapVersionTag}"/>
+        </ant>
+    </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
+            level="debug"
+            message="ant.file: ${ant.file}"/>
+        <echo
+            level="debug"
+            message="component.dir: ${component.dir}"/>
+
+        <!-- Get the dependencies -->
+        <antcall
+            target="getDependencies"/>
+    </target>
+    <!--
+        =====================================================================
+    -->
+    <!-- Get the dependencies based on releng maps -->
+    <!--
+        =====================================================================
+    -->
+    <target
+        name="getDependencies">
+        <ant
+            antfile="${component.dir}/dependency.xml"
+            target="get">
+            <property
+                name="base.install.dir"
+                value="${buildRoot}"/>
+        </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">
+        <echo
+            message="buildDirectory: ${buildDirectory}"/>
+        <customizeAccessRules
+            bundleDirectory="${buildDirectory}/plugins"/>
+    </target>
+    <!--
+        Steps to do before running the build.xmls for the elements being
+        built.
+    -->
+    <target
+        name="preProcess">
+        <replace
+            dir="${buildDirectory}/plugins"
+            value="${timestamp}"
+            token="@build@">
+            <include
+                name="**/about.mappings"/>
+        </replace>
+    </target>
+    <!--
+        Steps to do after running the build.xmls for the elements being
+        built.
+    -->
+    <target
+        name="postProcess">
+        <condition
+            property="logsAvailable">
+            <istrue
+                value="${javacVerbose}"/>
+        </condition>
+        <antcall
+            target="gatherLogs"/>
+    </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"></target>
+
+    <!--
+      Steps to do to test the build results
+    -->
+    <target
+        name="test"></target>
+
+    <!--
+      Steps to do to publish the build results
+    -->
+    <target
+        name="publish"></target>
+
+    <!--
+      Helper targets
+    -->
+    <target
+        name="gatherLogs"
+        if="logsAvailable">
+        <mkdir
+            dir="${buildDirectory}/${buildLabel}/compilelogs"/>
+        <echo
+            level="debug"
+            message="logExtension: ${logExtension}"/>
+        <antcall
+            target="allElements">
+            <param
+                name="target"
+                value="gatherLogs"/>
+            <param
+                name="logExtension"
+                value="${logExtension}"/>
+        </antcall>
+        <unzip
+            dest="${buildDirectory}/${buildLabel}/compilelogs"
+            overwrite="true">
+            <fileset
+                dir="${buildDirectory}/features/org.eclipse.wst.jsdt_sdk.feature">
+                <include
+                    name="**/*.log.zip"/>
+            </fileset>
+        </unzip>
+    </target>
+    <target
+        name="clean"
+        unless="noclean">
+        <antcall
+            target="allElements">
+            <param
+                name="target"
+                value="cleanElement"/>
+        </antcall>
+    </target>
+
+    <!--
+      Default target 
+    -->
+    <target
+        name="noDefault">
+        <echo
+            level="error"
+            message="You must specify a target when invoking this file"/>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/components/jsdt_sdk/dependency.xml b/releng.wtpbuilder/components/jsdt_sdk/dependency.xml
new file mode 100644
index 0000000..6d1fe59
--- /dev/null
+++ b/releng.wtpbuilder/components/jsdt_sdk/dependency.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+    <!--
+        ======================================================================
+        Properties that must be passed to this script: base.install.dir
+        dependencyTargets local.cache.dir dependency.properties
+        ======================================================================
+    -->
+<project
+    name="test"
+    default="get">
+    <target
+        name="get">
+        <!--
+            read in this properties, just so we can make sure our
+            requested pre-reqs are defined, which we do later with
+            statements such if="${groupId}.url"
+        -->
+        <property
+            file="${dependency.properties}"/>
+ 
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="emf"/>
+        </antcall>
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="emfxsd"/>
+        </antcall>
+       <antcall
+           target="getAndInstall">
+           <param
+               name="groupId"
+               value="emfvalidation"/>
+       </antcall>
+       <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="gef"/>
+        </antcall>
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="eclipse"/>
+        </antcall>
+        
+        <antcall 
+            target="getAndInstall"> 
+            <param 
+                 name="groupId"
+                 value="dtp"/> 
+        </antcall>
+        
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="eclipse"/>
+        </antcall>
+    </target>
+    <target
+        name="getAndInstall"
+        if="${groupId}.url">
+        <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>
\ No newline at end of file
diff --git a/releng.wtpbuilder/components/jsdt.tests/build.properties b/releng.wtpbuilder/components/jsdt_tests/build.properties
similarity index 82%
rename from releng.wtpbuilder/components/jsdt.tests/build.properties
rename to releng.wtpbuilder/components/jsdt_tests/build.properties
index 42b1c42..43b2ed3 100644
--- a/releng.wtpbuilder/components/jsdt.tests/build.properties
+++ b/releng.wtpbuilder/components/jsdt_tests/build.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
+# Copyright (c) 2003, 2009 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials 
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -35,3 +35,11 @@
 javacVerbose=true
 
 sign=false
+
+#############################################################
+
+# Properties introduced in 3.5 M3 (PDE base builder R35_M2). See
+# http://aniefer.blogspot.com/2008/10/sorting-bundles-and-parallel.html
+
+flattenDependencies=true
+parallelCompilation=true
diff --git a/releng.wtpbuilder/components/jsdt_tests/customTargets.xml b/releng.wtpbuilder/components/jsdt_tests/customTargets.xml
new file mode 100644
index 0000000..c8d6454
--- /dev/null
+++ b/releng.wtpbuilder/components/jsdt_tests/customTargets.xml
@@ -0,0 +1,319 @@
+<project
+    name="PDECustomTargets"
+    default="noDefault"
+    basedir=".">
+    <!--
+        = = = standard properties pattern = = = Note to be
+        cross-platform, "environment variables" are only appropriate for
+        some variables, e.g. ones we set, since properties are case
+        sensitive, even if the environment variables on your operating
+        system are not, e.g. it will be ${env.Path} not ${env.PATH} on
+        Windows
+    -->
+    <property
+        environment="env"/>
+    <!--
+        Let users override standard properties, if desired. If
+        directory, file, or some properties do not exist, then standard
+        properties will be used.
+    -->
+    <property
+        file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties"/>
+
+    <!-- let this project specify properties, if not already set -->
+    <property
+        file="build.properties"/>
+    <fail
+        message="dependency.properties must be specified by distribution script"
+        unless="dependency.properties"/>
+    <fail
+        unless="buildDirectory"
+        message="buildDirectory must be set"/>
+    <echo
+        message="buildDirectory: ${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
+            level="info"
+            message="Target:${target} "/>
+        <echo
+            level="debug"
+            message="basedir: ${basedir}"/>
+        <echo
+            level="info"
+            message="component: ${component}"/>
+        <echo
+            level="debug"
+            message="buildDirectory: ${buildDirectory}"/>
+        <echo
+            level="debug"
+            message="baseLocation: ${baseLocation}"/>
+        <echo
+            level="debug"
+            message="generic target: ${genericTargets}"/>
+        <echo
+            message="compilerArg: ${compilerArg}"/>
+        <echo
+            message="individualSourceBundles: ${individualSourceBundles}"/>
+        <ant
+            antfile="${genericTargets}"
+            target="${target}">
+            <property
+                name="type"
+                value="feature"/>
+            <property
+                name="id"
+                value="org.eclipse.wst.jsdt_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.wst.jsdt_tests.feature">
+        <property
+            name="archiveName"
+            value="wtp-jsdt-tests-${buildLabel}.zip"/>
+        <ant
+            antfile="${assembleScriptName}"
+            dir="${buildDirectory}"/>
+    </target>
+    <target
+        name="prePackage"/>
+    <target
+        name="postPackage">
+        <property
+            name="archiveName"
+            value="wtp-jsdt-tests-${buildLabel}.zip"/>
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/buildutilities.xml"
+            target="unpackUpdateJarsAndCreateZippedPackages">
+            <property
+                name="buildDirectory"
+                value="${buildDirectory}"/>
+            <property
+                name="buildLabel"
+                value="${buildLabel}"/>
+            <property
+                name="archiveName"
+                value="${archiveName}"/>
+        </ant>
+    </target>
+
+    <!-- 
+        Check out map files from repository
+    -->
+    <target
+        name="getMapFiles">
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
+            target="maputil">
+            <property
+                name="mapcomponent"
+                value="${env.RELENG}"/>
+            <property
+                name="mapTag"
+                value="${mapVersionTag}"/>
+        </ant>
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/maptasks.xml"
+            target="maputil">
+            <property
+                name="mapcomponent"
+                value="${env.RELENGSOURCEEDITING}"/>
+            <property
+                name="mapTag"
+                value="${mapVersionTag}"/>
+        </ant>
+    </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
+            level="debug"
+            message="ant.file: ${ant.file}"/>
+        <echo
+            level="debug"
+            message="component.dir: ${component.dir}"/>
+
+        <!-- Get the dependencies -->
+        <antcall
+            target="getDependencies"/>
+    </target>
+    <!--
+        =====================================================================
+    -->
+    <!-- Get the dependencies based on releng maps -->
+    <!--
+        =====================================================================
+    -->
+    <target
+        name="getDependencies">
+        <ant
+            antfile="${component.dir}/dependency.xml"
+            target="get">
+            <property
+                name="base.install.dir"
+                value="${buildRoot}"/>
+        </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">
+        <echo
+            message="buildDirectory: ${buildDirectory}"/>
+        <customizeAccessRules
+            bundleDirectory="${buildDirectory}/plugins"/>
+    </target>
+    <!--
+        Steps to do before running the build.xmls for the elements being
+        built.
+    -->
+    <target
+        name="preProcess">
+        <replace
+            dir="${buildDirectory}/plugins"
+            value="${timestamp}"
+            token="@build@">
+            <include
+                name="**/about.mappings"/>
+        </replace>
+    </target>
+    <!--
+        Steps to do after running the build.xmls for the elements being
+        built.
+    -->
+    <target
+        name="postProcess">
+        <condition
+            property="logsAvailable">
+            <istrue
+                value="${javacVerbose}"/>
+        </condition>
+        <antcall
+            target="gatherLogs"/>
+    </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"></target>
+
+    <!--
+      Steps to do to test the build results
+    -->
+    <target
+        name="test"></target>
+
+    <!--
+      Steps to do to publish the build results
+    -->
+    <target
+        name="publish"></target>
+
+    <!--
+      Helper targets
+    -->
+    <target
+        name="gatherLogs"
+        if="logsAvailable">
+        <mkdir
+            dir="${buildDirectory}/${buildLabel}/testcompilelogs"/>
+        <echo
+            level="debug"
+            message="logExtension: ${logExtension}"/>
+        <antcall
+            target="allElements">
+            <param
+                name="target"
+                value="gatherLogs"/>
+            <param
+                name="logExtension"
+                value="${logExtension}"/>
+        </antcall>
+        <unzip
+            dest="${buildDirectory}/${buildLabel}/testcompilelogs"
+            overwrite="true">
+            <fileset
+                dir="${buildDirectory}/features/org.eclipse.wst.jsdt_tests.feature">
+                <include
+                    name="**/*.log.zip"/>
+            </fileset>
+        </unzip>
+    </target>
+    <target
+        name="clean"
+        unless="noclean">
+        <antcall
+            target="allElements">
+            <param
+                name="target"
+                value="cleanElement"/>
+        </antcall>
+    </target>
+
+    <!--
+      Default target 
+    -->
+    <target
+        name="noDefault">
+        <echo
+            level="error"
+            message="You must specify a target when invoking this file"/>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/components/jsdt_tests/dependency.xml b/releng.wtpbuilder/components/jsdt_tests/dependency.xml
new file mode 100644
index 0000000..1e01112
--- /dev/null
+++ b/releng.wtpbuilder/components/jsdt_tests/dependency.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+    <!--
+        ======================================================================
+        Properties that must be passed to this script: base.install.dir
+        dependencyTargets local.cache.dir dependency.properties
+        ======================================================================
+    -->
+<project
+    name="test"
+    default="get">
+    <target
+        name="get">
+        <!--
+            read in this properties, just so we can make sure our
+            requested pre-reqs are defined, which we do later with
+            statements such if="${groupId}.url"
+        -->
+        <property
+            file="${dependency.properties}"/>
+ 
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="eclipse"/>
+        </antcall>
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="eclipseTestFramework"/>
+        </antcall>
+                <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="emf"/>
+        </antcall>
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="emfxsd"/>
+        </antcall>
+       <antcall
+           target="getAndInstall">
+           <param
+               name="groupId"
+               value="emfvalidation"/>
+       </antcall>
+       <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="gef"/>
+        </antcall>
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="eclipse"/>
+        </antcall>
+        
+        <antcall 
+            target="getAndInstall"> 
+            <param 
+                 name="groupId"
+                 value="dtp"/> 
+        </antcall>
+        
+        <antcall
+            target="getAndInstall">
+            <param
+                name="groupId"
+                value="eclipse"/>
+        </antcall>
+    </target>
+    <target
+        name="getAndInstall"
+        if="${groupId}.url">
+        <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>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.build/build.xml b/releng.wtpbuilder/distribution/jsdt.build/build.xml
new file mode 100644
index 0000000..081d161
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.build/build.xml
@@ -0,0 +1,83 @@
+<project
+    default="build"
+    basedir=".">
+    <fail
+        unless="wtp.builder.home"/>
+    <property
+        file="${wtp.builder.home}/build.properties"/>
+    <target
+        name="build"
+        depends="getBaseBuilder">
+        <dirname
+            file="${ant.file}"
+            property="distribution.wtp.build.dir"/>
+        <property
+            name="buildTargets"
+            value="${wtp.builder.home}/scripts/build/runbuild.xml"/>
+        <!--
+            for this distribution, dependencies come from project's
+            releng map project
+        -->
+        <property
+            name="dependency.properties"
+            value="${buildDirectory}/maps/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties"/>
+
+        <!-- calling label.xml to createg label.properties file -->
+        <ant
+            antfile="${wtp.builder.home}/scripts/build/label.xml"/>
+        <echo
+            level="info"
+            message="invoking buildTargets: ${buildTargets} to build for each component"/>
+        <ant
+            antfile="${buildTargets}">
+            <property
+                name="component"
+                value="jsdt"/>
+        </ant>
+        <ant
+            antfile="${buildTargets}">
+            <property
+                name="component"
+                value="jsdt_sdk"/>
+        </ant>
+        <ant
+            antfile="${buildTargets}">
+            <property
+                name="component"
+                value="jsdt_tests"/>
+            <property
+                name="eclipseBuildFailOnError"
+                value="false"/>
+        </ant>
+
+        <!-- package -->
+        <antcall
+            target="package"/>
+    </target>
+
+    <!-- invoking runbuild.xml targetting getBaseBuilder -->
+    <target
+        name="getBaseBuilder"
+        if="eclipse.builder.fetch">
+        <dirname
+            file="${ant.file}"
+            property="wtbuilder.dir"/>
+        <property
+            name="buildTargets"
+            value="${wtp.builder.home}/scripts/build/runbuild.xml"/>
+        <echo
+            level="info"
+            message="invoking buildTargets: ${buildTargets} -> getBaseBuilder"/>
+        <ant
+            antfile="${buildTargets}"
+            target="getBaseBuilder"/>
+    </target>
+    <target
+        name="package">
+        <!--
+            post, post packaging, for WTP ... "manually" assemble the
+            desired zips
+        -->
+        <!-- nothing to assemble right now -->
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.site/build.xml b/releng.wtpbuilder/distribution/jsdt.site/build.xml
new file mode 100644
index 0000000..1b3b037
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/build.xml
@@ -0,0 +1,170 @@
+<project
+    name="Build specific targets and properties"
+    default="build"
+    basedir=".">
+    <!--
+        Note to be cross-platform, "environment variables" are only
+        appropriate for some variables, e.g. ones we set, since
+        properties are case sensitive, even if the environment variables
+        on your operating system are not, e.g. it will be ${env.Path}
+        not ${env.PATH} on Windows
+    -->
+    <property
+        environment="env"/>
+    <!--
+        Let users override standard properties, if desired. If
+        directory, file, or some properties do not exist, then standard
+        properties will be used.
+    -->
+    <property
+        file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties"/>
+
+    <!-- = = = end standard properties pattern = = = -->
+    <echo
+        message="ant.file: ${ant.file}"/>
+    <target
+        name="build">
+        <java
+            jar="${eclipse.launcher}"
+            fork="true"
+            failonerror="true">
+            <jvmarg
+                value="-Dosgi.ws=${env.BASEWS}"/>
+            <jvmarg
+                value="-Dosgi.os=${env.BASEOS}"/>
+            <jvmarg
+                value="-Dosgi.arch=${env.BASEARCH}"/>
+            <jvmarg
+                value="-Dbuild.donottagmaps=${build.donottagmaps}"/>
+            <jvmarg
+                value="-DbuildBranch=${buildBranch}"/>
+            <jvmarg
+                value="-DbuildType=${buildType}"/>
+            <jvmarg
+                value="-DbuildId=${buildId}"/>
+            <jvmarg
+                value="-DmapVersionTag=${mapVersionTag}"/>
+            <jvmarg
+                value="-Dbuild.distribution=${build.distribution}"/>
+            <jvmarg
+                value="-DbuildDirectory=${buildDirectory}"/>
+            <jvmarg
+                value="-Dwtp.builder.home=${wtp.builder.home}"/>
+            <jvmarg
+                value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}"/>
+            <jvmarg
+                value="-Dprojectname=${projectname}"/>
+            <jvmarg
+                value="-Djava.protocol.handler.pkgs=com.ibm.etools.www.protocol"/>
+            <jvmarg
+                value="-DurlLogLocation=${buildDirectory}/outgoinghttplogfromsitebuild.log"/>
+            <arg
+                value="-data"/>
+            <arg
+                value="${basedir}/workspace"/>
+            <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.php"/>
+        <copy
+            file="${wtp.builder.home}/distribution/wtp.site/templateFiles/${indexTemplateFilename}"
+            tofile="${buildDirectory}/${indexFileName}"/>
+        <condition
+            property="isBuildTested"
+            value="true">
+            <available
+                file="${buildDirectory}/${buildLabel}/testResults/html"/>
+        </condition>
+        <ant
+            antfile="${publish.xml}"
+            dir="${component.dir}">
+            <property
+                name="dropTokenList"
+                value="%wtpruntime%,%wtpsdk%,%wtptest%,%wst%,%wst-sdk%,%wst-tests%,%jst-tests%,%wst-perf-tests%,%jst-perf-tests%,%jpt-runtime%,%jpt-sdk%,%jpt-tests%"/>
+            <property
+                name="webtoolsDownloadURL"
+                value="http://www.eclipse.org/downloads/download.php?file=/webtools/committers/drops"/>
+            <property
+                name="buildBranch"
+                value="${buildBranch}"/>
+            <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"/>
+
+        <!-- http access logs -->
+        <copy
+            todir="${result}/"
+            failonerror="false">
+            <fileset
+                dir="${buildDirectory}"
+                includes="*.log"/>
+        </copy>
+
+        <!-- ant build log, from control directory -->
+        <copy
+            todir="${result}/"
+            failonerror="false">
+            <fileset
+                dir="${env.ANT_WORKING}/${projectname}"
+                includes="antBuilderOutput.log"/>
+        </copy>
+
+
+
+        <!-- final count files -->
+        <countBuildFiles
+            sourceDirectory="${buildDirectory}/${buildLabel}"
+            filterString=".zip,.tar.gz"
+            outputFile="${buildDirectory}/${buildLabel}/files.count"/>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.site/compilerXMLOutputToHTML.xsl b/releng.wtpbuilder/distribution/jsdt.site/compilerXMLOutputToHTML.xsl
new file mode 100644
index 0000000..ffc7905
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/compilerXMLOutputToHTML.xsl
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output
+        method="html"
+        indent="yes"/>
+    <xsl:template
+        match="/">
+        <html>
+            <body>
+                <xsl:apply-templates
+                    select="compiler"/>
+            </body>
+        </html>
+    </xsl:template>
+    <xsl:template
+        match="compiler">
+        <h2>Compiler Report</h2>
+        <p>
+            Compiler:
+            <xsl:value-of
+                select="@name"/>
+            <xsl:text>   </xsl:text>
+            Version:
+            <xsl:value-of
+                select="@version"/>
+        </p>
+        <xsl:apply-templates
+            select="stats"/>
+        <xsl:apply-templates
+            select="sources"/>
+    </xsl:template>
+    <xsl:template
+        name="stats"
+        match="stats">
+        <p>
+            Number of source files:
+            <xsl:value-of
+                select="count(..//source)"/>
+            Number of classfiles:
+            <xsl:value-of
+                select="number_of_classfiles/@value"/>
+        </p>
+        <p>
+            Problems:
+            <xsl:value-of
+                select="problem_summary/@problems"/>
+            (Errors:
+            <xsl:value-of
+                select="problem_summary/@errors"/>
+            Warnings:
+            <xsl:value-of
+                select="problem_summary/@warnings"/>
+            )
+        </p>
+    </xsl:template>
+    <xsl:template
+        name="sources"
+        match="sources">
+        <xsl:if
+            test="count(source) > 0">
+            <dl>
+                <xsl:for-each
+                    select="source">
+                    <xsl:variable
+                        name="package"
+                        select="normalize-space(@package)">
+                    </xsl:variable>
+                    <xsl:variable
+                        name="path"
+                        select="normalize-space(@path)">
+                    </xsl:variable>
+                    <xsl:variable
+                        name="classname"
+                        select="substring-after($path, $package)">
+                    </xsl:variable>
+                    <xsl:if
+                        test="count(problems) > 0">
+                        <dt
+                            style="font-weight: bold; color: black">
+                            Source File:
+                            <xsl:value-of
+                                select="$package"/>
+                            <xsl:value-of
+                                select="$classname"/>
+                        </dt>
+                        <xsl:apply-templates
+                            select="problems">
+                            <xsl:with-param
+                                name="classname">
+                                <xsl:value-of
+                                    select="$classname"/>
+                            </xsl:with-param>
+                        </xsl:apply-templates>
+                    </xsl:if>
+                </xsl:for-each>
+            </dl>
+        </xsl:if>
+    </xsl:template>
+    <xsl:template
+        match="problems">
+        <xsl:param
+            name="classname"/>
+        <xsl:for-each
+            select="problem">
+            <dd
+                style="font-weight: normal; color: black">
+                <xsl:value-of
+                    select="position()"/>
+                <xsl:text>.  </xsl:text>
+                <xsl:value-of
+                    select="@severity"/>
+                <xsl:text>:  </xsl:text>
+                <xsl:value-of
+                    select="@id"/>
+                <xsl:variable
+                    name="lineNumber"
+                    select="@line">
+                </xsl:variable>
+                <xsl:for-each
+                    select="message">
+                    <p
+                        style="margin-left: +.5in; font-size: -1; margin-top: 0;margin-bottom:0;">
+                        <small>
+                            <xsl:value-of
+                                select="@value"/>
+                        </small>
+                    </p>
+                </xsl:for-each>
+                <xsl:for-each
+                    select="source_context">
+                    <xsl:variable
+                        name="pre"
+                        select="substring(@value,0,(@sourceStart + 1))">
+                    </xsl:variable>
+                    <xsl:variable
+                        name="main"
+                        select="substring(@value,(@sourceStart + 1),(((@sourceEnd + 1) - (@sourceStart + 1)) + 1))">
+                    </xsl:variable>
+                    <xsl:variable
+                        name="end"
+                        select="substring(@value,(@sourceEnd + 2))">
+                    </xsl:variable>
+                    <p
+                        style="margin-left: +.5in; font-size: -2; margin-top: 0;margin-bottom:0;">
+                        <xsl:value-of
+                            select="substring($classname,2)"/>
+                        :
+                    </p>
+                    <p
+                        style="margin-left: +.5in; font-size: -2;font-family: monospace; margin-top: 0;margin-bottom:0;">
+                        <xsl:value-of
+                            select="$lineNumber"/>
+                        :
+                        <xsl:value-of
+                            select="$pre"/>
+                        <b>
+                            <u>
+                                <xsl:value-of
+                                    select="$main"/>
+                            </u>
+                        </b>
+                        <xsl:value-of
+                            select="$end"/>
+                    </p>
+                </xsl:for-each>
+            </dd>
+        </xsl:for-each>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.site/publish.xml b/releng.wtpbuilder/distribution/jsdt.site/publish.xml
new file mode 100644
index 0000000..1a184e4
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/publish.xml
@@ -0,0 +1,697 @@
+<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
+        environment="env"/>
+    <fail
+        unless="buildDirectory"
+        message="buildDirectory must be provided to publish"/>
+    <fail
+        unless="buildLabel"
+        message="buildLabel must be provided to publish"/>
+    <fail
+        unless="wtp.builder.home"
+        message="wtp.builder.home must be provided to publish"/>
+    <fail
+        unless="build.distribution"
+        message="build.distribution must be provided to publish"/>
+    <property
+        name="resultDir"
+        value="${buildDirectory}/${buildLabel}"/>
+    <!--name of generated index page-->
+    <property
+        name="indexFileName"
+        value="index.php"/>
+    <property
+        name="templateDir"
+        value="${wtp.builder.home}/distribution/${build.distribution}.site"/>
+    <property
+        name="resultingIndex"
+        value="${resultDir}/${indexFileName}"/>
+    <echo
+        level="debug"
+        message="resultDir: ${resultDir}"/>
+    <echo
+        level="debug"
+        message="templateDir: ${templateDir}"/>
+    <echo
+        level="debug"
+        message="resultingIndex: ${resultingIndex}"/>
+    <target
+        name="default">
+        <copy
+            overwrite="true"
+            file="${wtp.builder.home}/distribution/${build.distribution}.site/templateFiles/${indexTemplateFilename}"
+            tofile="${resultingIndex}"/>
+        <antcall
+            target="countFiles"/>
+        <antcall
+            target="generateCompileIndex"/>
+        <antcall
+            target="generateJUnitTestsIndex"/>
+        <antcall
+            target="getStaticFiles"/>
+    </target>
+    <target
+        name="generateCompileIndex">
+        <!--
+            <taskdef name="indexResults"
+            classname="org.eclipse.wtp.releng.tools.ResultsSummaryGenerator"
+            />
+        -->
+        <!--
+            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/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties"/>
+
+        <!-- create tables of test plugin compiles first -->
+        <antcall
+            target="generateTestCompileOutput">
+            <param
+                name="outputDirectory"
+                value="${resultDir}/testcompilelogs"/>
+        </antcall>
+
+        <!-- create table of code plugins compiles -->
+        <antcall
+            target="generateCompileOutput">
+            <param
+                name="outputDirectory"
+                value="${resultDir}/compilelogs"/>
+        </antcall>
+        <tstamp>
+            <format
+                property="TODAY"
+                pattern="MMMM d, yyyy"/>
+        </tstamp>
+
+        <!--  Insert Build Type descriptor  -->
+        <antcall
+            target="${buildType}"/>
+        <antcall
+            target="writeData"/>
+        <!--
+            Update timestamp on file to permit overwrite through Ant
+            copy task
+        -->
+        <touch
+            file="${resultingIndex}"/>
+    </target>
+    <target
+        name="generateTestCompileOutput"
+        depends="checkIfCompileLogs"
+        if="doCompileLogs">
+        <summarizeResults
+            isBuildTested="false"
+            includeAll="true"
+            dropTokenList="${dropTokenList}"
+            xmlDirectoryName=""
+            dropDirectoryName="${resultDir}"
+            testResultsTemplateFileName="${templateDir}/templateFiles/testCompileResults.php.template"
+            testResultsHtmlFileName="testCompileResults.php"
+            hrefTestResultsTargetPath=""
+            hrefCompileLogsTargetPath="testcompilelogs"
+            compileLogsDirectoryName="${outputDirectory}"/>
+        <antcall
+            target="compilerXMLToHTML"/>
+    </target>
+    <target
+        name="generateCompileOutput"
+        depends="checkIfCompileLogs"
+        if="doCompileLogs">
+        <summarizeResults
+            isBuildTested="false"
+            includeAll="true"
+            dropTokenList="${dropTokenList}"
+            xmlDirectoryName=""
+            dropDirectoryName="${resultDir}"
+            testResultsTemplateFileName="${templateDir}/templateFiles/compileResults.php.template"
+            testResultsHtmlFileName="compileResults.php"
+            hrefTestResultsTargetPath="testResults/html"
+            hrefCompileLogsTargetPath="compilelogs"
+            compileLogsDirectoryName="${outputDirectory}"/>
+        <antcall
+            target="compilerXMLToHTML"/>
+    </target>
+    <target
+        name="compilerXMLToHTML">
+        <xslt
+            basedir="${outputDirectory}"
+            destdir="${outputDirectory}"
+            includes="**/*.xml"
+            scanincludeddirectories="true"
+            style="compilerXMLOutputToHTML.xsl"
+            force="true"/>
+    </target>
+    <target
+        name="generateJUnitTestsIndex"
+        depends="checkIfTested"
+        if="doTests">
+        <!--
+            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/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties"/>
+
+        <!-- create table of test plugin compiles first -->
+        <!-- set isBuildTested to true for the "compile only" results -->
+        <summarizeResults
+            isBuildTested="true"
+            dropTokenList="${dropTokenList}"
+            dropDirectoryName="${resultDir}"
+            xmlDirectoryName="${resultDir}/testResults/xml"
+            testResultsTemplateFileName="${templateDir}/templateFiles/testResults.php.template"
+            testResultsHtmlFileName="testResults.php"
+            hrefTestResultsTargetPath="testResults/html"
+            compileLogsDirectoryName=""/>
+        <tstamp>
+            <format
+                property="TODAY"
+                pattern="MMMM d, yyyy"/>
+        </tstamp>
+
+        <!--  Insert Build Type descriptor  -->
+        <antcall
+            target="${buildType}"/>
+        <antcall
+            target="writeData"/>
+        <!--
+            Update timestamp on file to permit overwrite through Ant
+            copy task
+        -->
+        <touch
+            file="${resultingIndex}"/>
+    </target>
+    <target
+        name="getStaticFiles">
+        <!--get static files required in the buildLabel directory-->
+        <copy
+            todir="${resultDir}">
+            <fileset
+                dir="${templateDir}/staticDropFiles"/>
+        </copy>
+
+        <!--copy buildnotes from plugin directories-->
+        <mkdir
+            dir="${resultDir}/buildnotes"/>
+        <copy
+            todir="${resultDir}/buildnotes"
+            flatten="true">
+            <fileset
+                dir="${buildDirectory}/plugins"
+                includes="**/buildnotes_*.html"/>
+            <fileset
+                dir="${buildDirectory}/features"
+                includes="**/buildnotes_*.html"/>
+        </copy>
+        <copy
+            file="${templateDir}/staticDropFiles/logIndex.php"
+            tofile="${resultDir}/testResults/consolelogs/full/logIndex.php"/>
+        <copy
+            file="${templateDir}/staticDropFiles/logIndex.php"
+            tofile="${resultDir}/testResults/consolelogs/testLogs/logIndex.php"/>
+        <copy
+            file="${templateDir}/staticDropFiles/logIndex.php"
+            tofile="${resultDir}/testResults/consolelogs/testSysErrorLogs/logIndex.php"/>
+    </target>
+    <target
+        name="updateSite">
+
+
+        <!-- get our authored, tokenized site.xml file -->
+        <copy
+            file="${wtp.builder.home}/distribution/${build.distribution}.site/templateFiles/siteWTP.xml"
+            tofile="${buildDirectory}/${buildLabel}/updateSite/site.xml"
+            overwrite="true"
+            failonerror="true"/>
+        <!--
+            get the ${buildDirectory}/finalPluginsVersions.properties,
+            and read as properties
+        -->
+        <!-- substitute property value for tokens -->
+        <replace
+            file="${buildDirectory}/${buildLabel}/updateSite/site.xml"
+            propertyfile="${buildDirectory}/finalFeaturesVersions.properties">
+            <replacefilter
+                token="@org.eclipse.wtp@"
+                property="org.eclipse.wtp"/>
+            <replacefilter
+                token="@org.eclipse.wtp.sdk@"
+                property="org.eclipse.wtp.sdk"/>
+            <replacefilter
+                token="@org.eclipse.jst@"
+                property="org.eclipse.jst"/>
+            <replacefilter
+                token="@org.eclipse.jst.sdk@"
+                property="org.eclipse.jst.sdk"/>
+            <replacefilter
+                token="@org.eclipse.jpt.feature@"
+                property="org.eclipse.jpt.feature"/>
+            <replacefilter
+                token="@org.eclipse.jpt_sdk.feature@"
+                property="org.eclipse.jpt_sdk.feature"/>
+        </replace>
+    </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.
+        -->
+        <countBuildFiles
+            sourceDirectory="${resultDir}"
+            filterString=".zip,.tar.gz"
+            outputFile="${resultDir}/files.count"/>
+    </target>
+
+    <!--Build type descriptors-->
+    <target
+        name="I">
+        <replace
+            file="${resultingIndex}"
+            token="%wtpandprereqs%"
+            value=" "/>
+        <replace
+            file="${resultingIndex}"
+            token="@type@"
+            value="Integration"/>
+    </target>
+    <target
+        name="S">
+        <replace
+            file="${resultingIndex}"
+            token="%wtpandprereqs%"
+            value=" "/>
+        <replace
+            file="${resultingIndex}"
+            token="@type@"
+            value="Stable"/>
+    </target>
+    <target
+        name="N">
+        <replace
+            file="${resultingIndex}"
+            token="%wtpandprereqs%"
+            value=" "/>
+        <replace
+            file="${resultingIndex}"
+            token="@type@"
+            value="Nightly"/>
+    </target>
+    <target
+        name="M">
+        <replace
+            file="${resultingIndex}"
+            token="%wtpandprereqs%"
+            value=" "/>
+        <replace
+            file="${resultingIndex}"
+            token="@type@"
+            value="Maintenance"/>
+    </target>
+    <target
+        name="R">
+        <replace
+            file="${resultingIndex}"
+            token="%wtpandprereqs%"
+            value=" "/>
+        <replace
+            file="${resultingIndex}"
+            token="@type@"
+            value="Release"/>
+    </target>
+    <target
+        name="T">
+        <replace
+            file="${resultingIndex}"
+            token="%wtpandprereqs%"
+            value=" "/>
+        <replace
+            file="${resultingIndex}"
+            token="@type@"
+            value="Test"/>
+    </target>
+    <target
+        name="P">
+        <replace
+            file="${resultingIndex}"
+            token="%wtpandprereqs%"
+            value=" "/>
+        <replace
+            file="${resultingIndex}"
+            token="@type@"
+            value="Patches"/>
+    </target>
+    <target
+        name="checkIfTested">
+        <echo
+            level="debug"
+            message="isBuildTested: ${isBuildTested}"/>
+        <condition
+            property="doTests">
+            <equals
+                arg1="${isBuildTested}"
+                arg2="true"
+                trim="true"
+                casesensitive="false"/>
+        </condition>
+    </target>
+    <target
+        name="checkIfCompileLogs">
+        <condition
+            property="doCompileLogs">
+            <available
+                file="${outputDirectory}"/>
+        </condition>
+    </target>
+    <target
+        name="writeData">
+        <!--  Insert Build Date  -->
+        <replace
+            file="${resultingIndex}"
+            token="@date@"
+            value="${TODAY}"/>
+
+        <!--  Insert Build Name  -->
+        <replace
+            file="${resultingIndex}"
+            token="@build@"
+            value="${buildLabel}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@buildBranch@"
+            value="${buildBranch}"/>
+
+        <!--  Insert PreRequsites  -->
+        <replace
+            file="${resultingIndex}"
+            token="@eclipseFile@"
+            value="${eclipse.file.linux-gtk-x86}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipseURL@"
+            value="${eclipse.url}/${eclipse.file.linux-gtk-x86}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipseBuildURL@"
+            value="${eclipse.url}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipsefilelinux@"
+            value="${eclipse.file.linux-gtk-x86}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipsefilewindows@"
+            value="${eclipse.file.win32-win32-x86}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipsefilemacos@"
+            value="${eclipse.file.macosx-carbon-ppc}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipseBuildHome@"
+            value="${eclipse.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipse.mirror.prefixuri@"
+            value="${eclipse.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipse.fspath.prefix@"
+            value="${eclipse.fspath.prefix}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@testURL@"
+            value="${eclipseTestFramework.url}/${eclipseTestFramework.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@testFile@"
+            value="${eclipseTestFramework.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfName@"
+            value="${emf.name}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfDescription@"
+            value="${emf.description}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfFile@"
+            value="${emf.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfURL@"
+            value="${emf.url}/${emf.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfBuildHome@"
+            value="${emf.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emf.mirror.prefixuri@"
+            value="${emf.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfxsdFile@"
+            value="${emfxsd.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfxsdName@"
+            value="${emfxsd.name}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfxsdDescription@"
+            value="${emfxsd.description}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfxsdURL@"
+            value="${emfxsd.url}/${emfxsd.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfxsdBuildHome@"
+            value="${emfxsd.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfxsd.mirror.prefixuri@"
+            value="${emfxsd.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationFile@"
+            value="${emfvalidation.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationURL@"
+            value="${emfvalidation.url}/${emfvalidation.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationBuildHome@"
+            value="${emfvalidation.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidation.mirror.prefixuri@"
+            value="${emfvalidation.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationName@"
+            value="${emfvalidation.name}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationDescription@"
+            value="${emfvalidation.description}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationsourceFile@"
+            value="${emfvalidationsourcedoc.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationsourceURL@"
+            value="${emfvalidationsourcedoc.url}/${emfvalidationsourcedoc.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationsourceBuildHome@"
+            value="${emfvalidationsourcedoc.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationsource.mirror.prefixuri@"
+            value="${emfvalidationsourcedoc.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationsourceName@"
+            value="${emfvalidationsourcedoc.name}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@emfvalidationsourceDescription@"
+            value="${emfvalidationsourcedoc.description}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wstFile@"
+            value="${wst.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wstURL@"
+            value="${wst.url}/${wst.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wstBuildHome@"
+            value="${wst.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wst.mirror.prefixuri@"
+            value="${wst.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@jstFile@"
+            value="${jst.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@jstURL@"
+            value="${jst.url}/${jst.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@jstBuildHome@"
+            value="${jst.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@jst.mirror.prefixuri@"
+            value="${jst.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wtpFile@"
+            value="${wtp.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wtpURL@"
+            value="${wtp.url}/${wtp.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wtpBuildHome@"
+            value="${wtp.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@wtp.mirror.prefixuri@"
+            value="${wtp.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@gefFile@"
+            value="${gef.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@gefURL@"
+            value="${gef.url}/${gef.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@gefBuildHome@"
+            value="${gef.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@gef.mirror.prefixuri@"
+            value="${gef.mirror.prefixuri}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipserelengFile@"
+            value="${eclipsereleng.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@eclipserelengURL@"
+            value="${eclipsereleng.url}/${eclipsereleng.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@orbitthirdpartyzipFile@"
+            value="${orbitthirdpartyzip.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@orbitthirdpartyzipURL@"
+            value="${orbitthirdpartyzip.url}/${orbitthirdpartyzip.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@orbitthirdpartyzipBuildHome@"
+            value="${orbitthirdpartyzip.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@orbitthirdpartyzip.mirror.prefixuri@"
+            value="${orbitthirdpartyzip.mirror.prefixuri}"/>
+
+
+        <!-- no longer used. Post 1.5.5 -->
+        <replace
+            file="${resultingIndex}"
+            token="@jemFile@"
+            value="${jem.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@jemURL@"
+            value="${jem.url}/${jem.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@jemBuildHome@"
+            value="${jem.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@jem.mirror.prefixuri@"
+            value="${jem.mirror.prefixuri}"/>
+        <!--
+            these token/s should not exist in maintenance stream, but do
+            no harm done, so in the interests of keeping builder streams
+            in sync, we'll leave them here as place hold
+        -->
+        <replace
+            file="${resultingIndex}"
+            token="@dtpFile@"
+            value="${dtp.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@dtpURL@"
+            value="${dtp.url}/${dtp.file}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@dtpBuildHome@"
+            value="${dtp.build.home}"/>
+        <replace
+            file="${resultingIndex}"
+            token="@dtp.mirror.prefixuri@"
+            value="${dtp.mirror.prefixuri}"/>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/access_err.gif b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/access_err.gif
new file mode 100644
index 0000000..4f0748a
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/access_err.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/access_warn.gif b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/access_warn.gif
new file mode 100644
index 0000000..8386e3e
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/access_warn.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/buildNotes.php b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/buildNotes.php
new file mode 100644
index 0000000..e843ecf
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/buildNotes.php
@@ -0,0 +1,63 @@
+<html>
+<head>
+<?php
+$parts = explode("/", getcwd());
+$parts2 = explode("-", $parts[count($parts) - 1]);
+$buildName = $parts2[1];
+
+echo "<title>Build Notes for $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 "$buildName"; ?></font></b></td>
+	</tr>
+</table>
+<table border="0">
+
+<?php
+$hasNotes = false;
+$aDirectory = dir("buildnotes");
+while ($anEntry = $aDirectory->read()) {
+    if ($anEntry != "." && $anEntry != "..") {
+        //print_r($anEntry);
+        //echo "<br />";
+
+        $subject = $anEntry;
+        $pattern = '/^buildnotes_(.*)/i';
+        preg_match($pattern, $subject, $matches);
+        $subject = $matches[1];
+        //print_r($subject);
+        //echo "<br />";
+        $pattern = '/^(.*)\.html$/';
+        preg_match($pattern, $subject, $matches);
+        //print_r($matches);
+        //echo "<br />";
+
+        $component = $matches[1];
+
+        $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/jsdt.site/staticDropFiles/compile_err.gif b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/compile_err.gif
new file mode 100644
index 0000000..c2bfdd6
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/compile_err.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/compile_warn.gif b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/compile_warn.gif
new file mode 100644
index 0000000..cf4fdf9
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/compile_warn.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/consoleLogs.php b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/consoleLogs.php
new file mode 100644
index 0000000..7dd5f42
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/consoleLogs.php
@@ -0,0 +1,94 @@
+<html>
+<head>
+<?php
+$parts = explode("/", getcwd());
+$parts2 = explode("-", $parts[count($parts) - 1]);
+$buildName = $parts2[1];
+
+echo "<title>Test Console Output for $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 "$buildName"; ?> </font></b></td>
+	</tr>
+</table>
+<table border="0">
+
+<?php
+$rootDir = "testResults/consolelogs";
+$hasNotes = false;
+$aDirectory = dir($rootDir);
+$index = 0;
+$dirindex = 0;
+while ($anEntry = $aDirectory->read()) {
+    if ($anEntry != "." && $anEntry != "..") {
+        if (is_file("$rootDir/$anEntry")) {
+            $entries[$index] = $anEntry;
+            $index++;
+        } else if (is_dir("$rootDir/$anEntry")) {
+            $direntries[$dirindex] = $anEntry;
+            $dirindex++;
+        }
+    }
+}
+$aDirectory->close();
+
+
+sort($entries);
+sort($direntries);
+
+for ($i = 0; $i < $dirindex; $i++) {
+    $anEntry = $direntries[$i];
+    $line = "<td><a href=\"testResults/consolelogs/$anEntry/logIndex.php\">$anEntry</a></td>";
+    echo "<tr>";
+    echo "$line";
+    echo "</tr>";
+}
+for ($i = 0; $i < $index; $i++) {
+    $anEntry = $entries[$i];
+    $logsize = filesize("testResults/consolelogs/$anEntry");
+
+
+    $level = 0;
+    if ($logsize > 20000) {
+        $level = 2;
+    }
+    else if ($logsize > 2000) {
+        $level = 1;
+    }
+
+    if ($level == 0) {
+        $line = "<td><a href=\"testResults/consolelogs/$anEntry\">$anEntry</a>  ($logsize bytes)</td>";
+    }
+    else if ($level == 1) {
+        $line = "<td><em><a href=\"testResults/consolelogs/$anEntry\">$anEntry</a>  ($logsize bytes)</em></td>";
+    } else if ($level == 2) {
+        $line = "<td><strong><a href=\"testResults/consolelogs/$anEntry\">$anEntry</a>  ($logsize bytes)</strong></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/jsdt.site/staticDropFiles/junit_err.gif b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/junit_err.gif
new file mode 100644
index 0000000..1b7ff9d
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/junit_err.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/logIndex.php b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/logIndex.php
new file mode 100644
index 0000000..0b36334
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/logIndex.php
@@ -0,0 +1,84 @@
+<html>
+<head>
+<?php
+
+function endsWith( $str, $sub ) {
+
+   return ( substr( $str, strlen( $str ) - strlen( $sub ) ) === $sub );
+}
+
+        $parts = explode("/", getcwd());
+        $parts2 = explode("-", $parts[count($parts) - 1]);
+        $buildName = $parts2[1];
+
+        echo "<title>Test Console Output for $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 "$buildName"; ?>
+      </font></b></td>
+  </tr>
+</table>
+<table border="0">
+
+<?php
+        $hasNotes = false;
+        $aDirectory = dir(".");
+        $index = 0;
+        while ($anEntry = $aDirectory->read()) {
+                if ($anEntry != "." && $anEntry != ".." && !endsWith(__FILE__, $anEntry)) {
+                        $entries[$index] = $anEntry;
+                        $index++;
+                }
+        }
+        aDirectory.closedir();
+
+
+        sort($entries);
+
+        for ($i = 0; $i < $index; $i++) {
+                $anEntry = $entries[$i];
+                $logsize = filesize("$anEntry");
+
+
+                $level = 0;
+                if ($logsize > 20000) {
+                        $level = 2;
+                }
+                else if ($logsize > 2000) {
+                        $level = 1;
+                }
+
+                if ($level == 0) {
+                        $line = "<td><a href=\"$anEntry\">$anEntry</a>  ($logsize bytes)</td>";
+                }
+                else if ($level == 1) {
+                        $line = "<td><em><a href=\"$anEntry\">$anEntry</a>  ($logsize bytes)</em></td>";
+                } else if ($level == 2) {
+                        $line = "<td><strong><a href=\"$anEntry\">$anEntry</a>  ($logsize bytes)</strong></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/jsdt.site/staticDropFiles/miscUtil.php b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/miscUtil.php
new file mode 100644
index 0000000..966ed48
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/miscUtil.php
@@ -0,0 +1,219 @@
+<?php
+
+// todo: unsure if can handle filenames that are URLs?
+// handy constant to compute file size in megabytes
+
+function fileSizeInMegs($filename) {
+	$onemeg=1024*1024;
+	$zipfilesize=filesize($filename);
+	$zipfilesize=round($zipfilesize/$onemeg, 0);
+	return $zipfilesize;
+}
+
+function fileSizeForDisplay($filename) {
+	$onekilo=1024;
+	$onemeg=$onekilo * $onekilo;
+	$criteria = 10 * $onemeg;
+	$scaleChar = "M";
+	if (file_exists($filename)) {
+      	$zipfilesize=filesize($filename);
+      	if ($zipfilesize > $criteria) {
+      		$zipfilesize=round($zipfilesize/$onemeg, 0);
+      		$scaleChar = "M";
+      	}
+      	else {
+      		$zipfilesize=round($zipfilesize/$onekilo, 0);
+      		$scaleChar = "K";
+      	}
+  	} 
+  	else {
+  	   $zipfilesize = 0;
+  	}
+	$result =  "(" . $zipfilesize . $scaleChar . ")";
+	return $result;
+}
+
+
+function displayFileLine($downloadprefix, $filename, $zipfilesize, $fileShortDescription) {
+	echo "<td align=\"right\" valign=\"top\" width=\"30%\">";
+	echo "<a href=\"$downloadprefix$filename\">" . $fileShortDescription . "</a>";
+	echo "</td><td align=\"right\" valign=\"top\" width=\"3%\">";
+	echo $zipfilesize;
+	echo "</td>";
+	echo "<td align=\"right\" valign=\"top\" width=\"2%\">";
+	echo "[<a href=\"checksum/$filename.md5\">md5</a>]";
+	echo "</td>";
+}
+
+function resourceExist($url, $mirrorPrefixuri, $prereqfilename, $eclipseFSpathPrefix)
+{
+	$result = false;
+
+	$allowURLopen = ini_get('allow_url_fopen');
+
+	if ($allowURLopen && stream_last_modified($url)) {
+		$result = true;
+	}
+	else {
+		// TODO: for now, we'll do a raw check on the whole file name, since enable_url_open
+		// is off. better would be to check if we are on build.eclipse.org or download.eclipse.org?
+    $wholePath = trim($eclipseFSpathPrefix) . "/" . trim($mirrorPrefixuri) . "/" . trim($prereqfilename);
+    if (file_exists($wholePath)) {
+    	$result = true;
+    }
+	}
+	return $result;
+}
+
+function stream_last_modified($url)
+{
+	if (function_exists('version_compare') && version_compare(phpversion(), '4.3.0') > 0)
+	{
+		if (!($fp = @fopen($url, 'r')))
+		return NULL;
+
+		$meta = stream_get_meta_data($fp);
+		for ($j = 0; isset($meta['wrapper_data'][$j]); $j++)
+		{
+			if (strstr(strtolower($meta['wrapper_data'][$j]), 'last-modified'))
+			{
+				$modtime = substr($meta['wrapper_data'][$j], 15);
+				break;
+			}
+		}
+		fclose($fp);
+	}
+	else
+	{
+		$parts = parse_url($url);
+		$host  = $parts['host'];
+		$path  = $parts['path'];
+
+		if (!($fp = @fsockopen($host, 80)))
+		return NULL;
+
+		$req = "HEAD $path HTTP/1.0\r\nUser-Agent: PHP/".phpversion()."\r\nHost: $host:80\r\nAccept: */*\r\n\r\n";
+		fputs($fp, $req);
+
+		while (!feof($fp))
+		{
+			$str = fgets($fp, 4096);
+			if (strstr(strtolower($str), 'last-modified'))
+			{
+				$modtime = substr($str, 15);
+				break;
+			}
+		}
+		fclose($fp);
+	}
+	return isset($modtime) ? strtotime($modtime) : time();
+}
+
+function isMirrored($uriToCheck) {
+	global $debugScript;
+	global $debugFunctions;
+	$localuri = $uriToCheck;
+
+	$debugMirrorList = false;
+	if ($debugScript) {
+		echo "uriToCheck: " . $localuri . "<br />";
+	}
+
+	$xmlcount = 0;
+
+	/* This method true and accurate method of parsing mirror results
+	 * may be expensive, and would
+	 * likely cause artificially high counts of "downloads".
+	 * Could maybe use if somehow only checked once ever 5 minutes or something.
+
+
+	 // turn off warnings, as sometimes HTML is returned, which causes lots of warnings
+	 $holdLevel = error_reporting(E_ERROR);
+	 $mirrorsxml=simplexml_load_file(rawurlencode($localuri) . urlencode("&format=xml"));
+	 error_reporting($holdLevel);
+
+
+	 if ($mirrorsxml) {
+	 if ($debugFunctions) {
+	 echo "root node: " . $mirrorsxml->getName() . "<br />";
+	 }
+	 if (strcmp($mirrorsxml->getName(), "mirrors") == 0) {
+	 foreach ($mirrorsxml->children() as $mirror) {
+	 if (strcmp($mirror->getName(),"mirror") == 0) {
+	 $xmlcount=$xmlcount+1;
+	 }
+	 if ($debugMirrorList) {
+	 print_r($mirror);
+	 echo "<br />";
+	 }
+	 }
+	 }
+	 if ($debugFunctions) {
+	 echo "Mirror count: " . $xmlcount . "<br />";
+	 }
+	 }
+	 */
+	/*
+	 * Use simple heuristic based on pattern
+	 * in the URI ... if it contains "/downloads/" then assume it's mirrored
+	 */
+	if (strpos($uriToCheck, "webtools/downloads/") > 0) {
+		$xmlcount = 1;
+	}
+	return ($xmlcount > 0);
+
+}
+
+// TODO: replace with Phoenix variables
+function getPlatform () {
+	global $debugScript;
+	global $debugFunctions;
+	// getBrowser is expensive, so cache the data
+	static $browser;
+	$platform = "unknown";
+
+
+	if(ini_get("browscap")) {
+		if(!isset($browser)){
+			$browser = get_browser(null, true);
+		}
+
+		if ($browser) {
+			$rawPlatform = $browser['platform'];
+			if ($debugFunctions) {
+				echo "browser platfrom: " . $rawPlatform . "<br />" ;
+			}
+
+			if ($debugFunctions) {
+				$browserKeys = array_keys($browser);
+				foreach ($browserKeys as $key) {
+					echo $key . ": " . $browser[$key] . "<br />";
+				}
+			}
+		}
+		if (strpos($rawPlatform, "Win") === 0) {
+			$platform="windows";
+		} else if (strpos($rawPlatform, "Linux") === 0) {
+			$platform="linux";
+		} else if (strpos($rawPlatform, "Mac") === 0) {
+			$platform="mac";
+		}
+	}
+	return $platform;
+}
+
+
+function getPrereqReferenceOrName($eclipseMirrorScript, $mirrorPrefixuri, $prerequrl, $prereqfilename, $eclipseFSpathPrefix) {
+	// todo: we really only need "if exists" so could make a bit more efficient
+	// I tried "file_exists" but is didn't seem to work on my test server
+	// For these pre-reqs, we assume if they exist, they are mirrored. This is true
+	// 99% of the time.
+
+	if (resourceExist($prerequrl, $mirrorPrefixuri, $prereqfilename, $eclipseFSpathPrefix)) {
+		$reflink="<a href=\"" . $eclipseMirrorScript . $mirrorPrefixuri . "/" . $prereqfilename . "\">" . $prereqfilename . "</a>";
+	} else {
+		$reflink=$prereqfilename;
+	}
+	return $reflink;
+}
+?>
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/pending.gif b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/pending.gif
new file mode 100644
index 0000000..66db2a6
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/pending.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/pending1.gif b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/pending1.gif
new file mode 100644
index 0000000..1b2ea6e
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/pending1.gif
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/report2.php b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/report2.php
new file mode 100644
index 0000000..52d2284
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/staticDropFiles/report2.php
@@ -0,0 +1,45 @@
+
+        <?php
+
+function parse_testResults($filename)
+{
+        $junitFailures = 0;
+        if (is_file($filename)) {
+                $handle = @fopen($filename, "r");
+                if ($handle)
+                {
+                        $size = filesize($filename);
+                        $content = fread($handle, $size);
+                        fclose($handle);
+                        $junitStart = strpos($content, "Errors &amp; Failures");
+                        $junitEnd = strpos($content, "</table>", $junitStart);
+                        $junitInfo = substr($content, $junitStart, $junitEnd - $junitStart);
+                        $start = strpos($junitInfo, "<td><b><font color=\"#ff0000\">");
+                        while ($start !== false)
+                        {
+                                $start += 29;
+                                $stop = strpos($junitInfo, "</font></b></td>", $start);
+                                if ($stop !== false)
+                                {
+                                        $result = substr($junitInfo, $start, $stop - $start);
+                                        if (is_numeric($result))
+                                        {
+                                                $junitFailures += $result;
+                                        }
+                                        else if (strcmp($result, "DNF") == 0)
+                                        {
+                                                $junitFailures++;
+                                        }
+                                }
+                                $start = strpos($junitInfo, "<td><b><font color=\"#ff0000\">", $stop);
+                        }
+                        $results = array($junitFailures);
+                        return $results;
+                }
+        }
+}
+
+
+?>
+
+
diff --git a/releng.wtpbuilder/distribution/jsdt.site/templateFiles/compileResults.php.template b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/compileResults.php.template
new file mode 100644
index 0000000..f785771
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/compileResults.php.template
@@ -0,0 +1,76 @@
+<html>
+<head>
+
+<?php
+        $parts = explode("/", getcwd());
+        $parts2 = explode("-", $parts[count($parts) - 1]);
+        $buildName = $parts2[1];
+
+        echo "<title>Compile Logs: Code Bundles for $buildName</title>";
+?>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
+<style>
+.bold, .bold TD, .bold TH, .bold TR
+{
+font-weight:bold;
+}
+.numeric, .numeric TD
+{
+text-align:right;
+padding-right:2%;
+}
+.normaltable, .normaltable TD, .normaltable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:White;
+}
+.errorltable, .errortable TD, .errortable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:Red;
+font-weight:bold;
+}
+.warningtable, .warningtable TD, .warningtable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:khaki;
+}
+.extraWarningTable, .extraWarningTable TD, .extraWarningTable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:Yellow;
+}
+</style>
+</head>
+<body>
+
+<?php
+        echo "<h1>Compile Logs: Code Bundles for $buildName</h1>";
+?>
+
+
+<table id=tabledata align = "center" width="75%" border="1">
+  <tr>
+    <td class="bold" align="center">Compile Logs</td>
+    <td class="bold" align="center">Compile Errors</td>
+    <td class="bold" align="center">Compiler Warnings</td>
+    <td class="bold" align="center">Access Violations</td>
+    <td class="bold" align="center">Access Warnings</td>
+  </tr>
+
+  %compilelogs%
+
+</table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsdt.site/templateFiles/index.html.template.php b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/index.html.template.php
new file mode 100644
index 0000000..f1b7c39
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/index.html.template.php
@@ -0,0 +1,672 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
+<?php
+
+ini_set("display_errors", "true");
+error_reporting (E_ALL);
+
+
+$buildBranch="@buildBranch@";
+$build="@build@";
+$type="@type@";
+$builddate="@date@";
+
+$eclipseMirrorPrefixuri="@eclipse.mirror.prefixuri@";
+$eclipseFSpathPrefix="@eclipse.fspath.prefix@";
+
+$eclipsefilelinux="@eclipsefilelinux@";
+$eclipsefilewindows="@eclipsefilewindows@";
+$eclipsefilemacosx="@eclipsefilemacos@";
+
+$eclipseURL="@eclipseURL@";
+$eclipseFile="@eclipseFile@";
+$eclipseBuildURL="@eclipseBuildURL@";
+$eclipseBuildHome="@eclipseBuildHome@";
+$testURL="@testURL@";
+$testFile="@testFile@";
+
+$wstURL="@wstURL@";
+$wstFile="@wstFile@";
+$wstMirrorPrefixuri="@wst.mirror.prefixuri@";
+$wstBuildHome="@wstBuildHome@";
+
+$jstURL="@jstURL@";
+$jstFile="@jstFile@";
+$jstMirrorPrefixuri="@jst.mirror.prefixuri@";
+$jstBuildHome="@jstBuildHome@";
+
+$wtpURL="@wtpURL@";
+$wtpFile="@wtpFile@";
+$wtpMirrorPrefixuri="@wtp.mirror.prefixuri@";
+$wtpBuildHome="@wtpBuildHome@";
+
+$gefURL="@gefURL@";
+$gefFile="@gefFile@";
+$gefMirrorPrefixuri="@gef.mirror.prefixuri@";
+$gefBuildHome="@gefBuildHome@";
+
+$emfURL="@emfURL@";
+$emfFile="@emfFile@";
+$emfMirrorPrefixuri="@emf.mirror.prefixuri@";
+$emfBuildHome="@emfBuildHome@";
+$emfName="@emfName@";
+$emfDescription="@emfDescription@";
+
+$emfsourceURL="@emfsourceURL@";
+$emfsourceFile="@emfsourceFile@";
+$emfsourceMirrorPrefixuri="@emfsource.mirror.prefixuri@";
+$emfsourceBuildHome="@emfsourceBuildHome@";
+$emfsourceName="@emfsourceName@";
+$emfsourceDescription="@emfsourceDescription@";
+
+
+$emfxsdURL="@emfxsdURL@";
+$emfxsdFile="@emfxsdFile@";
+$emfxsdMirrorPrefixuri="@emfxsd.mirror.prefixuri@";
+$emfxsdBuildHome="@emfxsdBuildHome@";
+$emfxsdName="@emfxsdName@";
+$emfxsdDescription="@emfxsdDescription@";
+
+$emfxsdsourceURL="@emfxsdsourceURL@";
+$emfxsdsourceFile="@emfxsdsourceFile@";
+$emfxsdsourceMirrorPrefixuri="@emfxsdsource.mirror.prefixuri@";
+$emfxsdsourceBuildHome="@emfxsdsourceBuildHome@";
+$emfxsdsourceName="@emfxsdsourceName@";
+$emfxsdsourceDescription="@emfxsdsourceDescription@";
+
+
+$emfvalidationURL="@emfvalidationURL@";
+$emfvalidationFile="@emfvalidationFile@";
+$emfvalidationMirrorPrefixuri="@emfvalidation.mirror.prefixuri@";
+$emfvalidationBuildHome="@emfvalidationBuildHome@";
+$emfvalidationName="@emfvalidationName@";
+$emfvalidationDescription="@emfvalidationDescription@";
+
+$emfvalidationsourceURL="@emfvalidationsourceURL@";
+$emfvalidationsourceFile="@emfvalidationsourceFile@";
+$emfvalidationsourceMirrorPrefixuri="@emfvalidationsource.mirror.prefixuri@";
+$emfvalidationsourceBuildHome="@emfvalidationsourceBuildHome@";
+$emfvalidationsourceName="@emfvalidationsourceName@";
+$emfvalidationsourceDescription="@emfvalidationsourceDescription@";
+
+
+$dtpURL="@dtpURL@";
+$dtpFile="@dtpFile@";
+$dtpMirrorPrefixuri="@dtp.mirror.prefixuri@";
+$dtpBuildHome="@dtpBuildHome@";
+
+
+$eclipserelengFile="@eclipserelengFile@";
+$eclipserelengURL="@eclipserelengURL@";
+$orbitthirdpartyzipFile="@orbitthirdpartyzipFile@";
+$orbitthirdpartyzipURL="@orbitthirdpartyzipURL@";
+$orbitthirdpartyzipBuildHome="@orbitthirdpartyzipBuildHome@";
+$orbitthirdpartyzipMirrorPrefixuri="@orbitthirdpartyzip.mirror.prefixuri@";
+
+
+
+
+include("miscUtil.php");
+
+
+
+
+$debugScript = false;
+$debugFunctions = false;
+
+$defaultMirrorScript="";
+$defaultWTPMirrorPrefix="./";
+
+$eclipseMirrorScript="http://www.eclipse.org/downloads/download.php?file=";
+
+// TODO: improve so this hard coding isn't required.
+// This depends on the declare script changing webtools/committers to webtools/downloads
+// And, the logic is such that if it is not mirrored, this URI is not used at all, just
+// a relative reference only
+$eclipseWTPMirrorPrefix="/webtools/committers/drops/$buildBranch/$build/";
+
+
+$mirrorScript=$defaultMirrorScript;
+$downloadprefix=$defaultWTPMirrorPrefix;
+
+
+$keytestMirrorString=$eclipseMirrorScript . "$eclipseWTPMirrorPrefix/wtp-jsdt-sdk-$build.zip";
+if (isMirrored($keytestMirrorString) ) {
+	$mirrorScript=$eclipseMirrorScript;
+	$downloadprefix="${mirrorScript}${eclipseWTPMirrorPrefix}";
+}
+
+if ($debugScript)  {
+	echo "inferred platform: " . getPlatform();
+}
+
+
+// our summary results handling requires php 5 (for simple xml file loading)
+// so, if not php 5, just don't display any summary results
+// This was found to be required, since some mirror our whole site (e.g. IBM)
+// and not all mirrors use PHP 5
+$displayTestSummary=false;
+if (phpversion() >= 5) {
+
+	$code_totalBundles=0;
+	$code_totalErrors=0;
+	$code_totalWarnings=0;
+	$code_totalforbiddenAccessWarningCount=0;
+	$code_totaldiscouragedAccessWarningCount=0;
+
+	$test_totalBundles=0;
+	$test_totalErrors=0;
+	$test_totalWarnings=0;
+	$test_totalforbiddenAccessWarningCount=0;
+	$test_totaldiscouragedAccessWarningCount=0;
+
+
+	$displayTestSummary=true;
+	// expecting grandTotalErrors and grandTotalTests
+	$filename = "unitTestsSummary.xml";
+	if (file_exists($filename)) {
+		$prefix = "unitTests_";
+		$unitTestsSummary = simplexml_load_file($filename);
+		foreach ($unitTestsSummary->summaryItem as $summaryItem) {
+			$name = $summaryItem->name;
+			$value = $summaryItem->value;
+			$code= "\$" . $prefix . $name . " = " . $value . ";";
+			//echo "<br />code: " . $code;
+			eval($code);
+		}
+	}
+
+	$filename = "compilelogsSummary.xml";
+	if (file_exists($filename)) {
+		$prefix = "code_";
+		$compileSummary = simplexml_load_file($filename);
+		foreach ($compileSummary->summaryItem as $summaryItem) {
+			$name = $summaryItem->name;
+			$value = $summaryItem->value;
+			$code= "\$" . $prefix . $name . " = " . $value . ";";
+			//echo "<br />code: " . $code;
+			eval($code);
+		}
+	}
+
+	$filename = "testcompilelogsSummary.xml";
+	if (file_exists($filename)) {
+		$prefix = "test_";
+		$compileSummary = simplexml_load_file($filename);
+		foreach ($compileSummary->summaryItem as $summaryItem) {
+			$name = $summaryItem->name;
+			$value = $summaryItem->value;
+			$code= "\$" . $prefix . $name . " = " . $value . ";";
+			//echo "<br />code: " . $code;
+			eval($code);
+		}
+	}
+}
+
+$incubating="true";
+
+
+
+if ($incubating) {
+echo '<title>WTP Incubator Downloads</title>'; 
+}
+else {
+echo '<title>WTP Downloads</title>';
+}
+
+
+?>
+
+
+</head>
+
+<body>
+
+
+<?php
+
+// tiny banner to remind when looking at "local" machine results
+$serverName = $_SERVER["SERVER_NAME"];
+
+if (!stristr($serverName, "eclipse.org") && !stristr($serverName,"you.are.at.eclipsecon.org")) {
+	echo '<center>
+          <p>
+          Reminder: this is <font color="#FF0000">' .
+	$serverName .
+        '</font>
+          See also
+          <a href="http://download.eclipse.org/webtools/downloads" target="_top">the live public Eclipse site</a>.
+          </p>
+          <hr />
+          </center>';
+
+}
+?>
+
+<?php if ($incubating) { ?>
+<table BORDER=0 CELLSPACING=2 CELLPADDING=2 WIDTH="100%">
+	<tr>
+		<td ALIGN=left><font face="'Bitstream Vera',Helvetica,Arial" size="+2"><b><?php echo "$type";?>
+		Build: <?php echo "$build";?></b></font></td>
+		<td align="right" rowspan="3"><a
+			href="http://www.eclipse.org/projects/what-is-incubation.php"><img
+			src="http://www.eclipse.org/images/egg-incubation.png"
+			alt="Incubation" align="middle" border="0"></a></td>
+	
+	
+	<tr valign="top">
+		<td><font size="-1"><?php echo "$builddate";?></font></td>
+	</tr>
+	<tr valign="top">
+		<td>
+		<p>The Eclipse Web Tools Platform (WTP) Incubator Project provides
+		tools for development that are just getting started, or are
+		experimental in some fashion.</p>
+		</td>
+	</tr>
+</table>
+
+<?php } else { ?>
+
+<table BORDER=0 CELLSPACING=2 CELLPADDING=2 WIDTH="100%">
+	<tr>
+		<td ALIGN=left><font face="'Bitstream Vera',Helvetica,Arial" size="+2"><b><?php echo "$type";?>
+		Build: <?php echo "$build";?></b></font></td>
+	
+	
+	<tr valign="top">
+		<td><font size="-1"><?php echo "$builddate";?></font></td>
+	</tr>
+	<tr valign="top">
+		<td>
+		<p>Component build from the Eclipse Web Tools Platform (WTP) Project.</p>
+		</td>
+	</tr>
+</table>
+
+<?php } ?>
+
+<!-- ***********  Prerequisites **************  -->
+<table border=0 cellspacing=2 cellpadding=2 width="100%">
+	<tr>
+		<td align="left" valign="top" bgcolor="#0080C0"><font
+			face="'Bitstream Vera',Helvetica,Arial" color="#FFFFFF">Prerequisites
+		and Handy Extras</font></td>
+	</tr>
+	<tr>
+		<td>
+		<p>These are the prerequisites to build or run these packages. All 
+		are not necessarily required, but instead some subset. Also
+		listed are some frequently needed links for committer-required
+		packages when creating new development environments, or targets to run
+		against.</p>
+		<p>Note that WTP requires Java 5 or higher (and, for some things,
+		actually requires a JDK rather than only a JRE) even though many other
+		<a href="http://www.eclipse.org/downloads/">Eclipse Projects</a> can
+		run with <a href="http://www.eclipse.org/downloads/moreinfo/jre.php">other
+		JRE levels</a>.</p>
+		<p></p>
+		</td>
+	</tr>
+	<tr>
+		<td>
+		<table border=0 cellspacing=1 cellpadding=1 width="90%" align="center">
+			<tr valign="top">
+				<td width="10%"></td>
+				<td width="40%">Eclipse Platform (Platform, JDT)</td>
+				<?php
+				//customize page depending on user's browser/platform, if we can detect it
+				$usersPlatform = getPlatform();
+				// assume windows by default, since likely most frequent, even for cases where
+				// platform is "unknown". I've noticed Opera reports 'unknown' :(
+				$recommendedFile=$eclipsefilewindows;
+				if (strcmp($usersPlatform,"linux")== 0) {
+					$recommendedFile=$eclipsefilelinux;
+				} else if (strcmp($usersPlatform,"mac") == 0) {
+					$recommendedFile=$eclipsefilemacosx;
+				}
+				?>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $eclipseMirrorPrefixuri, $eclipseURL, $recommendedFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $eclipseBuildURL . "\">appropriate platform</a>";
+				echo " or <a href=\"" . $eclipseBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td><?php 
+				echo $emfName . "&nbsp;" . $emfDescription ;
+				?></td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $emfMirrorPrefixuri, $emfURL, $emfFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $emfBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td><?php 
+				echo $emfxsdName . "&nbsp;" . $emfxsdDescription ;
+				?></td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $emfxsdMirrorPrefixuri, $emfxsdURL, $emfxsdFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $emfxsdBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td><?php echo "$emfvalidationName $emfvalidationDescription" ?></td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $emfvalidationMirrorPrefixuri, $emfvalidationURL, $emfvalidationFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $emfvalidationBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td>Graphical Editing Framework (GEF)</td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $gefMirrorPrefixuri, $gefURL, $gefFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $gefBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td>Data Tools Platform (DTP) (required only for EJB or JPT
+				development)</td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $dtpMirrorPrefixuri, $dtpURL, $dtpFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $dtpBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="middle">
+				<td width="10%"></td>
+				<td colspan="2">
+				<hr />
+				</td>
+			</tr>
+
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td>Web Tools Platform portion</td>
+				<td align="right"><?php
+				// debug
+				// echo "debug: full path: " . $eclipseFSpathPrefix . "/" . $wstMirrorPrefixuri . "/" . $wstFile;
+				$prereqReferenceOrName=getPrereqReferenceOrName($eclipseMirrorScript, $eclipseMirrorPrefixuri, $eclipseURL, $eclipseFile, $eclipseFSpathPrefix);
+				echo $prereqReferenceOrName;
+				echo " or <a href=\"" . $eclipseBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+			<tr valign="middle">
+				<td width="10%"></td>
+				<td colspan="2">
+				<hr />
+				</td>
+			</tr>
+
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td><?php echo "$emfvalidationsourceName $emfvalidationsourceDescription" ?></td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $emfvalidationsourceMirrorPrefixuri, $emfvalidationsourceURL, $emfvalidationsourceFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $emfvalidationsourceBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td>Eclipse Test Framework (required only for Automated JUnit tests)</td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $eclipseMirrorPrefixuri, $testURL, $testFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $eclipseBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td>Eclipse releng tool (required only for committers to more easily
+				"release" code to a build)</td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $eclipseMirrorPrefixuri, $eclipserelengURL, $eclipserelengFile, $eclipseFSpathPrefix);
+				echo " or <a href=\"" . $eclipseBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+			<tr valign="top">
+				<td width="10%"></td>
+				<td>Third Party code from Orbit. Not required and is currently much
+				more than needed for WTP, but some committers like using to create a
+				PDE target.</td>
+				<td align="right"><?php
+				echo getPrereqReferenceOrName($eclipseMirrorScript, $orbitthirdpartyzipMirrorPrefixuri, $orbitthirdpartyzipURL, $orbitthirdpartyzipFile,$eclipseFSpathPrefix);
+				echo " or <a href=\"" . $orbitthirdpartyzipBuildHome . "\">equivalent</a></td>";
+				?>
+			
+			</tr>
+
+		</table>
+		</td>
+	</tr>
+</table>
+
+<!-- ***********  WTP **************  -->
+<table border=0 cellspacing=2 cellpadding=2 width="100%">
+	<tr>
+		<td align=left valign=top colspan="5" bgcolor="#0080C0"><font
+			face="'Bitstream Vera',Helvetica,Arial" color="#FFFFFF"> Web Tools
+		Platform</font></td>
+	</tr>
+
+	<tr>
+		<td align="left" valign="top" colspan="5">
+		<p>The Zip files includes the features and plugins for the JavaScript Development Tools (JSDT).</p>
+		</td>
+	</tr>
+	<tr>
+		<td>
+		<table border=0 cellspacing=2 cellpadding=2 width="90%" align="center">
+
+
+			<tr>
+				<td align="left" valign="top" width="10%"><b>Minimal</b></td>
+				<td align="left" valign="top">
+				<p>Executable code only.</p>
+				</td>
+				<?php
+				$zipfilename="wtp-jsdt-${build}";
+				$filename=$zipfilename.".zip";
+				$zipfilesize=fileSizeForDisplay($filename);
+				$fileShortDescription="jsdt";
+				displayFileLine($downloadprefix, $filename, $zipfilesize, $fileShortDescription);
+				?>
+			</tr>
+
+			<tr>
+				<td align="left" valign="top" width="10%"><b>SDK</b></td>
+				<td align="left" valign="top">
+				<p>Executable code and source code.</p>
+				</td>
+				<?php
+				$zipfilename="wtp-jsdt-sdk-${build}";
+				$filename=$zipfilename.".zip";
+				$zipfilesize=fileSizeForDisplay($filename);
+				$fileShortDescription="jsdt sdk";
+				displayFileLine($downloadprefix, $filename, $zipfilesize, $fileShortDescription);
+				?>
+			</tr>
+			<tr>
+				<td align="left" valign="top" width="10%"><b>Tests</b></td>
+				<td align="left" valign="top">
+				<p>Unit tests.</p>
+				</td>
+				<?php
+				$zipfilename="wtp-jsdt-tests-${build}";
+				$filename=$zipfilename.".zip";
+				$zipfilesize=fileSizeForDisplay($filename);
+				$fileShortDescription="jsdt tests";
+				displayFileLine($downloadprefix, $filename, $zipfilesize, $fileShortDescription);
+				?>
+			</tr>
+		</table>
+		</td>
+	
+	
+	<tr>
+
+</table>
+
+
+
+
+
+
+
+<!-- ***********  Build Status **************  -->
+<table border=0 cellspacing=2 cellpadding=2 width="100%">
+	<tr>
+		<td align=left valign=top bgcolor="#0080C0"><font
+			face="'Bitstream Vera',Helvetica,Arial" color="#FFFFFF">Status, tests
+		and other interesting details</font></td>
+	</tr>
+	<tr>
+		<td>
+		<table border=0 cellspacing=2 cellpadding=2 width="90%" align="center">
+
+			<tr>
+				<td><a href="buildNotes.php">Build notes</a> <br />
+				<a href="directory.txt">map files</a> <br />
+				<?php
+
+				if ($displayTestSummary) {
+
+
+					if (isset($unitTests_grandTotalErrors)) {
+						$errorColor="green";
+						if ($unitTests_grandTotalErrors > 0) {
+							$errorColor="red";
+						}
+						echo "<a href=\"testResults.php\">Unit test results</a>&nbsp;";
+						echo "<img src=\"junit_err.gif\"/><font color=\"" . $errorColor . "\">" . $unitTests_grandTotalErrors . "</font>&nbsp;&nbsp;Total: " . $unitTests_grandTotalTests;
+					}
+					else {
+						// we hardly ever "pend" anymore ... abscense usually signifies no tests or a build error.
+						echo "<br /><font color=\"orange\">Unit tests don't exists, are pending, or there's a build error.</font>";
+						//&nbsp;&nbsp;<img src=\"pending.gif\"/>";
+					}
+
+					echo "<br />";
+					echo "<a href=\"compileResults.php\">Compile logs: Code Bundles</a>";
+
+					echo "&nbsp;&nbsp;($code_totalBundles)&nbsp;&nbsp;";
+					echo "<img src=\"compile_err.gif\"/><font color=red>$code_totalErrors</font>&nbsp;";
+					echo "<img src=\"compile_warn.gif\"/><font color=orange>$code_totalWarnings</font>&nbsp;";
+					echo "<img src=\"access_err.gif\"/><font color=red>$code_totalforbiddenAccessWarningCount</font>&nbsp;";
+					echo "<img src=\"access_warn.gif\"/><font color=orange>$code_totaldiscouragedAccessWarningCount</font>&nbsp;";
+
+					echo "<br />";
+					echo "<a href=\"testCompileResults.php\">Compile logs: Test Bundles</a>";
+
+					echo "&nbsp;&nbsp;($test_totalBundles)&nbsp;&nbsp;";
+					echo "<img src=\"compile_err.gif\"/><font color=red>$test_totalErrors</font>&nbsp;";
+					echo "<img src=\"compile_warn.gif\"/><font color=orange>$test_totalWarnings</font>&nbsp;";
+					echo "<img src=\"access_err.gif\"/><font color=red>$test_totalforbiddenAccessWarningCount</font>&nbsp;";
+					echo "<img src=\"access_warn.gif\"/><font color=orange>$test_totaldiscouragedAccessWarningCount</font>&nbsp;";
+				}
+
+				?> <br />
+
+				<?php
+				if (file_exists("versioningReportName.php")) {
+					include "versioningReportName.php";
+					$fname="${versionReportFilename}.html";
+					if (file_exists($fname)) {
+						echo "<br /> <a href='$fname'>Versioning Information</a>";
+					}
+}
+?> <?php
+echo "<br />";
+if (file_exists("./apiresults/api-progress.html"))
+{
+	echo "<br /> <a href=\"apiresults/api-progress.html\">API Progress Report</a>";
+}
+if (file_exists("./apiresults/api-info-summary.html"))
+{
+	echo "<br /> <a href=\"apiresults/api-info-summary.html\">APIs Defined by Each Component</a>";
+}
+if (file_exists("./apiresults/api-ref-compatibility.html"))
+{
+	echo "<br /> <a href=\"apiresults/api-ref-compatibility.html\">Adopter Breakage Report</a>";
+}
+if (file_exists("./apiresults/api-violation-summary.html"))
+{
+	echo "<br /> <a href=\"apiresults/api-violation-summary.html\">API Violations</a>";
+}
+if (file_exists("./apiresults/component-api-violation-all.html"))
+{
+	echo "<br /> <a href=\"apiresults/component-api-violation-all.html\">Non-API dependencies</a>";
+}
+if (file_exists("./apiresults/api-tc-summary.html"))
+{
+	echo "<br /> <a href=\"apiresults/api-tc-summary.html\">API Test Coverage</a>";
+}
+if (file_exists("./apiresults/api-javadoc-summary.html"))
+{
+	echo "<br /> <a href=\"apiresults/api-javadoc-summary.html\">API Javadoc Coverage</a>";
+}
+if (file_exists("./apiresults/api-tc-summary.html"))
+{
+	echo "<br /><br /> <a href=\"apiresults/full_test_coverage/api-tc-summary.html\">Test Coverage for All Classes and Methods</a>";
+}
+?> <?php
+if (file_exists("./perfresults/graph/performance.php"))
+{
+	echo "<br />";
+	echo "<br /> <a href=\"perfresults/graph/performance.php\">Performance Results</a>";
+	echo "<br />";
+}
+?></td>
+			</tr>
+
+
+		</table>
+		</td>
+	</tr>
+</table>
+
+
+
+<!-- footer -->
+<center>
+<hr>
+<p>All downloads are provided under the terms and conditions of the <a
+	href="http://www.eclipse.org/legal/notice.html">Eclipse.org Software
+User Agreement</a> unless otherwise specified.</p>
+
+<p>If you have problems downloading the drops, contact the <font
+	face="'Bitstream Vera',Helvetica,Arial" size="-1"><a
+	href="mailto:webmaster@eclipse.org">webmaster</a></font>.</p>
+
+</center>
+<!-- end footer -->
+
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsdt.site/templateFiles/siteEnablingFeatures.xml b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/siteEnablingFeatures.xml
new file mode 100644
index 0000000..cc3ed81
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/siteEnablingFeatures.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+    <description> The update site contains the enabling features. </description>
+    <category-def
+        name="Enabling Features"
+        label="Enabling Features">
+        <description> This category contains features used by several
+            projects that enable some functionality, but which by
+            themselves are not very interesting. </description>
+    </category-def>
+</site>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.site/templateFiles/siteWTP.xml b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/siteWTP.xml
new file mode 100644
index 0000000..f94e83f
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/siteWTP.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site
+    pack200="true"
+    mirrorsURL="http://www.eclipse.org/downloads/download.php?file=/webtools/testUpdates/site.xml&amp;format=xml"
+    digestURL="http://download.eclipse.org/webtools/testUpdates/">
+    <description
+        url="http://download.eclipse.org/webtools/declaredUpdates/index.html"> The update site contains the features of the of Eclipse Web
+        Tools Project (WTP) </description>
+    <feature
+        url="features/org.eclipse.wst_@org.eclipse.wst@.jar"
+        id="org.eclipse.wst"
+        version="@org.eclipse.wst@">
+        <category
+            name="Web Tools Platform (WTP)"/>
+    </feature>
+    <feature
+        url="features/org.eclipse.wst.sdk_@org.eclipse.wst.sdk@.jar"
+        id="org.eclipse.wst.sdk"
+        version="@org.eclipse.wst.sdk@">
+        <category
+            name="Web Tools Platform (WTP)"/>
+    </feature>
+    <feature
+        url="features/org.eclipse.jst_@org.eclipse.jst@.jar"
+        id="org.eclipse.jst"
+        version="@org.eclipse.jst@">
+        <category
+            name="Web Tools Platform (WTP)"/>
+    </feature>
+    <feature
+        url="features/org.eclipse.jst.sdk_@org.eclipse.jst.sdk@.jar"
+        id="org.eclipse.jst.sdk"
+        version="@org.eclipse.jst.sdk@">
+        <category
+            name="Web Tools Platform (WTP)"/>
+    </feature>
+    <feature
+        url="features/org.eclipse.jpt.feature_@org.eclipse.jpt.feature@.jar"
+        id="org.eclipse.jpt.feature"
+        version="@org.eclipse.jpt.feature@">
+        <category
+            name="Web Tools Platform (WTP)"/>
+    </feature>
+    <feature
+        url="features/org.eclipse.jpt_sdk.feature_@org.eclipse.jpt_sdk.feature@.jar"
+        id="org.eclipse.jpt_sdk.feature"
+        version="@org.eclipse.jpt_sdk.feature@">
+        <category
+            name="Web Tools Platform (WTP)"/>
+    </feature>
+    <category-def
+        name="Web Tools Platform (WTP)"
+        label="Web Tools Platform (WTP)">
+        <description> This category contains the features of the Eclipse
+            Web Tools Project (WTP). </description>
+    </category-def>
+</site>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.site/templateFiles/testCompileResults.php.template b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/testCompileResults.php.template
new file mode 100644
index 0000000..42d6f65
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/testCompileResults.php.template
@@ -0,0 +1,76 @@
+<html>
+<head>
+
+<?php
+        $parts = explode("/", getcwd());
+        $parts2 = explode("-", $parts[count($parts) - 1]);
+        $buildName = $parts2[1];
+
+        echo "<title>Compile Logs: Test Bundles for $buildName</title>";
+?>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
+<style>
+.bold, .bold TD, .bold TH, .bold TR
+{
+font-weight:bold;
+}
+.numeric, .numeric TD
+{
+text-align:right;
+padding-right:2em;
+}
+.normaltable, .normaltable TD, .normaltable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:White;
+}
+.errorltable, .errortable TD, .errortable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:Red;
+font-weight:Bold;
+}
+.warningtable, .warningtable TD, .warningtable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:khaki;
+}
+.extraWarningTable, .extraWarningTable TD, .extraWarningTable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:Yellow;
+}
+</style>
+</head>
+<body>
+
+<?php
+        echo "<h1>Compile Logs: Test Bundles for $buildName</h1>";
+?>
+
+
+<table id=tabledata align = "center" width="75%" border="1">
+  <tr>
+    <td class="bold" align="center">Compile Logs</td>
+    <td class="bold" align="center">Compile Errors</td>
+    <td class="bold" align="center">Compiler Warnings</td>
+    <td class="bold" align="center">Access Violations</td>
+    <td class="bold" align="center">Access Warnings</td>
+  </tr>
+
+  %compilelogs%
+
+</table>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsdt.site/templateFiles/testResults.php.template b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/testResults.php.template
new file mode 100644
index 0000000..ddad0b7
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/templateFiles/testResults.php.template
@@ -0,0 +1,119 @@
+<html>
+<head>
+
+<?php
+	$parts = explode("/", getcwd());
+	$parts2 = explode("-", $parts[count($parts) - 1]);
+	$buildName = $parts2[1];
+	
+	echo "<title>Test Results for $buildName </title>";
+?>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
+<style>
+.bold, .bold TD, .bold TH, .bold TR
+{
+font-weight:bold;
+}
+.numeric, .numeric TD
+{
+text-align:right;
+padding-right:2em;
+}
+.normaltable, .normaltable TD, .normaltable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:White;
+}
+.errorltable, .errortable TD, .errortable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:Red;
+font-weight:Bold;
+}
+.warningtable, .warningtable TD, .warningtable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:khaki;
+}
+.extraWarningTable, .extraWarningTable TD, .extraWarningTable TH
+{
+font-family:Bitstream Vera Sans Mono, monospace;
+font-size:0.9em;
+color:Black;
+background-color:Yellow;
+
+}
+</style>
+
+
+</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 "$buildName"; ?> on Various Platforms and JRE</font></b></td>
+  </tr>
+</table>
+
+<?php
+if (file_exists("testResults"))
+{
+$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 "$buildName"; ?> </font></b></td>
+  </tr>
+</table>
+
+<table id=tableunittestdata align = "center" width="75%" border="1">
+  <tr> 
+    <td class="bold" align="center" width="70%">Test Suite</td>
+    <td class="bold" align="center" width="10%">Errors &amp; Failures</td>
+    <td class="bold" align="center" width="10%">Total Tests</td>
+    <td class="bold" align="center" width="10%">Total Time (s)</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 "$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>
+
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsdt.site/transformReportToHTML.xml b/releng.wtpbuilder/distribution/jsdt.site/transformReportToHTML.xml
new file mode 100644
index 0000000..3e9f35b
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.site/transformReportToHTML.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+    name="xsl-conversion"
+    default="main"
+    basedir=".">
+    <target
+        name="main"
+        description="example.@dot.xml to produce example.@dot.html">
+      <xslt
+          destdir="${resultDir}/compilelogs"
+          scanincludeddirectories="true"
+          style="compilerXMLOutputToHTML.xsl"
+          force="true" >
+            <fileset dir="${resultDir}/compilelogs" includes="**/*.xml" />
+      </xslt>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.tests/build.xml b/releng.wtpbuilder/distribution/jsdt.tests/build.xml
new file mode 100644
index 0000000..e630fa6
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.tests/build.xml
@@ -0,0 +1,327 @@
+<project
+    name="Build specific targets and properties"
+    default="runTest">
+    <!--
+        Note to be cross-platform, "environment variables" are only
+        appropriate for some variables, e.g. ones we set, since
+        properties are case sensitive, even if the environment variables
+        on your operating system are not, e.g. it will be ${env.Path}
+        not ${env.PATH} on Windows
+    -->
+    <property
+        environment="env"/>
+    <fail
+        message="testRoot must be set for this task"
+        unless="testRoot"/>
+    <!-- required to get proper value of dropinsFolder -->
+    <property
+        name="keyCfgFile"
+        value="${env.PROJECT_BUILDERS}/${projectname}/${env.RELENG}/maps/build.cfg"/>
+    <echo
+        level="debug"
+        message="keyCfgFile: ${keyCfgFile}"/>
+    <property
+        file="${keyCfgFile}"/>
+
+
+    <!-- 
+	   Steps to do after the build is done. 
+	 -->
+    <target
+        name="test">
+        <dirname
+            file="${ant.file}"
+            property="currentDirectory"/>
+        <ant
+            antfile="${ant.file}"
+            target="runTest"
+            dir="${currentDirectory}"/>
+    </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="${buildDirectory}/label.properties"/>
+        <property
+            file="${wtp.builder.home}/build.properties"/>
+        <fail
+            message="testRoot must be set for this task"
+            unless="testRoot"/>
+        <mkdir
+            dir="${testRoot}"/>
+
+        <!-- if results already exist, delete them -->
+        <delete
+            dir="${testRoot}/results"
+            failOnError="false"/>
+        <mkdir
+            dir="${testRoot}/results"/>
+        <mkdir
+            dir="${testRoot}/results/consolelogs"/>
+        <mkdir
+            dir="${testRoot}/results/consolelogs/metadata-logs"/>
+        <mkdir
+            dir="${testRoot}/results/consolelogs/configuration-logs"/>
+        <copy
+            todir="${testRoot}"
+            overwrite="true">
+            <fileset
+                dir="${test.component.dir}/testScripts"/>
+        </copy>
+        <echo
+            message="BASEOS: ${env.BASEOS}   BASEWS: ${env.BASEWS}   BASEARCH: ${env.BASEARCH} "/>
+        <ant
+            antfile="${test.component.dir}/testdependency.xml"
+            target="get">
+            <property
+                name="dependency.properties"
+                value="${buildDirectory}/maps/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties"/>
+            <property
+                name="base.install.dir"
+                value="${testRoot}"/>
+        </ant>
+        <antcall
+            target="unzipTests"/>
+        <antcall
+            target="runTestEclipse">
+            <param
+                name="testTarget"
+                value="all"/>
+        </antcall>
+        <antcall
+            target="postRunTestEclipse">
+            <param
+                name="testTarget"
+                value="all"/>
+        </antcall>
+    </target>
+    <target
+        name="unzipTests">
+        <!--
+            unzip the builds and junit tests we use 'unzip' here, so we
+            can continue on error, if desired. (such as if zip was not
+            created, due to other failures or options).
+        -->
+        <echo
+            message="installing sdk"/>
+        <exec
+            dir="${buildDirectory}/${buildLabel}"
+            executable="unzip"
+            failonerror="true">
+            <arg
+                line="-o -qq  wtp-jsdt-sdk-${buildLabel}.zip -d ${testRoot}${dropinsFolder}"/>
+        </exec>
+        <echo
+            message="installing tests"/>
+        <exec
+            dir="${buildDirectory}/${buildLabel}"
+            executable="unzip"
+            failonerror="false">
+            <arg
+                line="-o -qq wtp-jsdt-tests-${buildLabel}.zip -d ${testRoot}${dropinsFolder}"/>
+        </exec>
+    </target>
+    <!--
+        time out may need to be set/adjust for api or performance tests?
+        This testTimeLimit is the whole, overall limit on tests. There's
+        a shorter one for individual suites. some common values, of
+        milliseconds to more recognizable units: 7200000: 2 hours
+        3600000: 1 hour 1800000: 30 minutes 600000: 10 minutes
+    -->
+    <property
+        name="testTimeLimit"
+        value="7200000"/>
+    <property
+        name="testFailOnError"
+        value="false"/>
+    <target
+        name="runTestEclipse"
+        description="Run our JUnit's within an instance of antRunner">
+        <property
+            name="test-vm"
+            value="${env.JAVA_6_HOME}/bin/java"/>
+        <property
+            name="plugin-path"
+            value="${testRoot}${dropinsFolder}/eclipse/plugins"/>
+        <property
+            name="vmargs"
+            value="-Xmx512m -Dosgi.ws=${env.BASEWS} -Dosgi.os=${env.BASEOS} -Dosgi.arch=${env.BASEARCH} -Dws=${env.BASEWS} -Dos=${env.BASEOS} -Darch=${env.BASEARCH} -Dnoclean=true -DbuildBranch=${buildBranch} -DbuildType=${buildType} -DbuildId=${buildId} -DtestRoot=${testRoot} -DtestDir=${testRoot} -DbuildDirectory=${buildDirectory} -Dbuild.home=${env.BUILD_HOME} -DeclipseBuilderDirectory=${pde.builder.path} -DbuildLabel=${buildLabel} -Dtest-vm=${test-vm}  -Dperf.buildId=${buildType}${date}-${time}"/>
+        <!--
+            set path to eclipse folder. If local folder, use '.';
+            otherwise, use c:\path\to\eclipse or /path/to/eclipse/
+        -->
+        <property
+            name="eclipse.home"
+            value="${testRoot}"/>
+        <echo
+            message="Running junits"/>
+        <!--
+            Remember: using -debug for org.eclipse.ant.core.antRunner
+            produces ant debug info to be output ... which is a TON of
+            stuff
+        -->
+        <echo
+            message="eclipse.launcher: ${eclipse.launcher}"/>
+        <java
+            taskname="unit-test-masterprocess"
+            fork="true"
+            resultProperty="wtpmasterjunitresult"
+            failonerror="false"
+            timeout="${testTimeLimit}"
+            dir="${testRoot}/eclipse"
+            jvm="${env.JAVA_6_HOME}/bin/java"
+            classname="org.eclipse.equinox.launcher.Main">
+            <classpath>
+                <fileset
+                    dir="${testRoot}/eclipse/plugins">
+                    <include
+                        name="org.eclipse.equinox.launcher_*.jar"/>
+                </fileset>
+            </classpath>
+            <jvmarg
+                value="-Xmx512m"/>
+            <jvmarg
+                value="-Dosgi.ws=${env.BASEWS}"/>
+            <jvmarg
+                value="-Dosgi.os=${env.BASEOS}"/>
+            <jvmarg
+                value="-Dosgi.arch=${env.BASEARCH}"/>
+            <jvmarg
+                value="-Dws=${env.BASEWS}"/>
+            <jvmarg
+                value="-Dos=${env.BASEOS}"/>
+            <jvmarg
+                value="-Darch=${env.BASEARCH}"/>
+            <jvmarg
+                value="-Dnoclean=true"/>
+            <jvmarg
+                value="-DbuildBranch=${buildBranch}"/>
+            <jvmarg
+                value="-DbuildType=${buildType}"/>
+            <jvmarg
+                value="-DbuildId=${buildId}"/>
+            <jvmarg
+                value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}"/>
+            <jvmarg
+                value="-Dprojectname=${projectname}"/>
+            <arg
+                value="-nosplash"/>
+            <arg
+                value="-consolelog"/>
+            <arg
+                value="-data"/>
+            <arg
+                value="${testRoot}/overallTestWorkspace"/>
+            <arg
+                value="-application"/>
+            <arg
+                value="org.eclipse.ant.core.antRunner"/>
+            <arg
+                value="-file"/>
+            <arg
+                value="${testRoot}/test.xml"/>
+            <arg
+                value="-logger"/>
+            <arg
+                value="org.apache.tools.ant.DefaultLogger"/>
+            <env
+                key="DISPLAY"
+                value="${env.DISPLAY}"/>
+            <redirector
+                output="${testRoot}/results/fullOutput.txt"
+                error="${testRoot}/results/fullErrorLog.txt"/>
+            <sysproperty
+                key="build.home"
+                value="${env.BUILD_HOME}"/>
+            <sysproperty
+                key="buildDirectory"
+                value="${buildDirectory}"/>
+            <sysproperty
+                key="buildLabel"
+                value="${buildLabel}"/>
+            <sysproperty
+                key="baseLocation"
+                value="${baseLocation}"/>
+            <sysproperty
+                key="testRoot"
+                value="${testRoot}"/>
+            <sysproperty
+                key="testDir"
+                value="${testRoot}"/>
+            <sysproperty
+                key="perf.buildId"
+                value="${buildType}${date}-${time}"/>
+            <sysproperty
+                key="eclipseBuilderDirectory"
+                value="${pde.builder.path}"/>
+            <sysproperty
+                key="buildLabel"
+                value="${buildLabel}"/>
+        </java>
+        <echo
+            message="wtpmasterjunitresult ${wtpmasterjunitresult}"/>
+    </target>
+    <target
+        name="postRunTestEclipse">
+        <copy
+            todir="${buildDirectory}/${buildLabel}/testResults/consolelogs/testLogs"
+            overwrite="true"
+            failonerror="false">
+            <fileset
+                dir="${testRoot}/results">
+                <include
+                    name="*output.txt"/>
+            </fileset>
+        </copy>
+        <copy
+            todir="${buildDirectory}/${buildLabel}/testResults/consolelogs/testSysErrorLogs"
+            overwrite="true"
+            failonerror="false">
+            <fileset
+                dir="${testRoot}/results">
+                <include
+                    name="*error.txt"/>
+            </fileset>
+        </copy>
+        <copy
+            file="${testRoot}/results/fullOutput.txt"
+            toDir="${buildDirectory}/${buildLabel}/testResults/consolelogs/full"
+            overwrite="true"
+            failonerror="false">
+        </copy>
+        <copy
+            file="${testRoot}/results/fullErrorLog.txt"
+            toDir="${buildDirectory}/${buildLabel}/testResults/consolelogs/full"
+            overwrite="true"
+            failonerror="false">
+        </copy>
+        <copy
+            todir="${buildDirectory}/${buildLabel}/testResults/xml"
+            overwrite="true"
+            failonerror="false">
+            <fileset
+                dir="${testRoot}/results/xml">
+                <include
+                    name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy
+            todir="${buildDirectory}/${buildLabel}/testResults/html"
+            overwrite="true"
+            failonerror="false">
+            <fileset
+                dir="${testRoot}/results/html">
+                <include
+                    name="*.html"/>
+            </fileset>
+        </copy>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.tests/templateFiles/index.php b/releng.wtpbuilder/distribution/jsdt.tests/templateFiles/index.php
new file mode 100644
index 0000000..8d23693
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.tests/templateFiles/index.php
@@ -0,0 +1,80 @@
+<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;
+        $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);
+        if ($count > 0)
+        {
+          echo "<tr><td><a href=\"$link\"><b><font color=\"red\">";
+          echo "$anEntry";
+          echo "</font></b></a></td>";
+          echo "<td><b><font color=\"red\">$count</font></b></td></tr>";
+        }
+        else
+        {
+          echo "<tr><td><a href=\"$link\">";
+          echo "$anEntry";
+          echo "</a></td>";
+          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/wtptestlog.txt">logs</a> contain the console output captured while 
+running the JUnit automated tests. <br>
+<br>
+
+</body>
+</html>
diff --git a/releng.wtpbuilder/distribution/jsdt.tests/testScripts/ComputePluginVersion.jar b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/ComputePluginVersion.jar
new file mode 100644
index 0000000..ad06a45
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/ComputePluginVersion.jar
Binary files differ
diff --git a/releng.wtpbuilder/distribution/jsdt.tests/testScripts/JUNIT.XSL b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/JUNIT.XSL
new file mode 100644
index 0000000..30a407d
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/JUNIT.XSL
@@ -0,0 +1,580 @@
+<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/jsdt.tests/testScripts/test.xml b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/test.xml
new file mode 100644
index 0000000..9a4ee91
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/test.xml
@@ -0,0 +1,178 @@
+<project
+    name="Automated Eclipse Testing"
+    default="all"
+    basedir=".">
+    <property
+        environment="env"/>
+
+    <!-- required to get proper value of dropinsFolder -->
+    <property
+        name="keyCfgFile"
+        value="${env.PROJECT_BUILDERS}/${projectname}/${env.RELENG}/maps/build.cfg"/>
+    <echo
+        level="debug"
+        message="keyCfgFile: ${keyCfgFile}"/>
+    <property
+        file="${keyCfgFile}"/>
+    <echo
+        level="info"
+        message="starting Automated Eclipse Testing"/>
+    <echo
+        level="debug"
+        message="basedir: ${basedir}"/>
+    <echo
+        level="debug"
+        message="testRoot: ${testRoot}"/>
+    <fail
+        message="testRoot must be set"
+        unless="testRoot"/>
+
+    <!--properties file containing the build information-->
+    <property
+        file="${buildDirectory}/label.properties"/>
+
+    <!--default directory where test-eclipse will be installed-->
+    <property
+        name="install"
+        value="${testRoot}"/>
+    <!--
+        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="${testRoot}${dropinsFolder}/eclipse/"/>
+    <!--
+        The directory that will contain the xml and html results from
+        the tests that are run
+    -->
+    <property
+        name="results"
+        value="${testRoot}/results"/>
+    <target
+        name="init">
+        <antcall
+            target="computePluginVersion"/>
+        <property
+            file="${testRoot}/test2.properties"/>
+    </target>
+    <target
+        name="runtests"
+        description="Runs ant on the test.xml for a specified plugin.">
+        <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"/>
+        <copy
+            file="${eclipse-home}/${report}.xml"
+            tofile="${results}/xml/${report}_${platform}.xml"
+            failonerror="false"/>
+        <antcall
+            target="genHtml"/>
+    </target>
+    <target
+        name="runtests-normal">
+        <ant
+            antfile="${eclipse-home}/plugins/${testPlugin}/test.xml"
+            dir="${eclipse-home}">
+            <property
+                name="library-file"
+                value="${testRoot}/wtp-junit-tests.xml"/>
+        </ant>
+        <copy
+            file="${eclipse-home}/${report}.xml"
+            tofile="${results}/xml/${report}_${platform}.xml"
+            failonerror="false"/>
+        <antcall
+            target="genHtml"/>
+    </target>
+    <target
+        name="jsdt-tests"
+        depends="init">
+        <antcall
+            target="runtests">
+            <param
+                name="testPlugin"
+                value="${org.eclipse.wst.jsdt.core.tests.model}"/>
+            <param
+                name="report"
+                value="org.eclipse.wst.jsdt.core.tests.model"/>
+        </antcall>
+    </target>
+
+
+    <!-- releng Tests -->
+    <!--
+        <target name="releng-tests" depends="init" description="Runs the
+        releng tests."> <antcall target="runtests"> <param
+        name="testPlugin" value="${org.eclipse.wtp.releng.tests}" />
+        <param name="report" value="org.eclipse.wtp.releng.tests" />
+        </antcall> </target>
+    -->
+    <target
+        name="all"
+        depends="init">
+        <echo
+            level="info"
+            message="Starting Unit Tests"/>
+        <!--
+            <echo level="info" message="Starting releng tests" />
+            <antcall target="releng-tests" />
+        -->
+        <echo
+            level="info"
+            message="Starting jsdt tests"/>
+        <antcall
+            target="jsdt-tests"/>
+        <echo
+            level="info"
+            message="Ended Unit Tests"/>
+    </target>
+    <target
+        name="genHtml"
+        description="Generates HTML results with provided JUNIT.XSL provided"
+        unless="genHtml.disable">
+        <xslt
+            style="JUNIT.XSL"
+            basedir="${results}/xml"
+            destdir="${results}/html"/>
+    </target>
+    <target
+        name="computePluginVersion"
+        depends="test2properties"
+        unless="test2propertiesexists">
+        <java
+            classname="org.eclipse.wtp.releng.test.ComputePluginVersion">
+            <classpath>
+                <pathelement
+                    location="ComputePluginVersion.jar"/>
+            </classpath>
+            <arg
+                value="${eclipse-home}/plugins"/>
+            <arg
+                value="${testRoot}/test2.properties"/>
+            <jvmarg
+                value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}"/>
+        </java>
+    </target>
+    <target
+        name="test2properties">
+        <condition
+            property="test2propertiesexists">
+            <available
+                file="${testRoot}/test2.properties"/>
+        </condition>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.tests/testScripts/wtp-junit-tests.xml b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/wtp-junit-tests.xml
new file mode 100644
index 0000000..112a224
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.tests/testScripts/wtp-junit-tests.xml
@@ -0,0 +1,321 @@
+<?xml version="1.0"?>
+<project
+    name="JUnit tests"
+    basedir=".">
+    <property
+        environment="env"/>
+    <!-- required to get proper value of dropinsFolder -->
+    <property
+        name="keyCfgFile"
+        value="${env.PROJECT_BUILDERS}/${projectname}/${env.RELENG}/maps/build.cfg"/>
+    <echo
+        level="debug"
+        message="keyCfgFile: ${keyCfgFile}"/>
+    <property
+        file="${keyCfgFile}"/>
+    <target
+        name="init">
+        <!--
+            Parameters: (Mandatory) data-dir - the workspace directory
+            for Eclipse to write its data plugin-name - symboic name of
+            the plugin to test testPlugin - directory name of plugin
+            (with version suffix) classname - the name of the test class
+            (Optional - overrides defaults set in script) extraVMargs -
+            allows separate setting of VM args from separate caller.
+            timeout - overrides default test timeout value (in
+            milliseconds).
+        -->
+        <property
+            name="junit-report-output"
+            value="${testRoot}/results"/>
+        <mkdir
+            dir="${junit-report-output}/raw"/>
+        <!--
+            if not otherwise set, be sure extraVMargs is at least empty
+            string
+        -->
+        <property
+            name="extraVMargs"
+            value=""/>
+
+        <!-- if not otherwise set, use a unique workspace name -->
+        <property
+            name="data-dir"
+            value="${testRoot}/junitworkspaces/workspace-${classname}"/>
+        <property
+            name="testRoot"
+            value="${testRoot}"/>
+        <property
+            name="timeout"
+            value="1800000"/>
+        <property
+            name="junit-report-output"
+            value="${junit-report-output}"/>
+        <property
+            name="plugin-path"
+            value="${testRoot}${dropinsFolder}/eclipse/plugins/${testPlugin}"/>
+        <property
+            name="formatter"
+            value="org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter"/>
+        <property
+            name="test-output"
+            value="${junit-report-output}/raw/${classname}.xml"/>
+        <property
+            name="jvm"
+            value="${env.JAVA_6_HOME}/bin/java"/>
+        <dirname
+            file="${ant.file}"
+            property="currentDir"/>
+        <echo
+            level="debug"
+            message="data-dir: ${data-dir}"/>
+        <echo
+            level="debug"
+            message="plugin-name: ${plugin-name}"/>
+        <echo
+            level="debug"
+            message="testPlugin: ${testPlugin}"/>
+        <echo
+            level="debug"
+            message="classname: ${classname}"/>
+        <echo
+            level="debug"
+            message="extraVMargs: ${extraVMargs}"/>
+        <echo
+            level="debug"
+            message="timeout: ${timeout}"/>
+        <echo
+            level="debug"
+            message="testRoot: ${testRoot}"/>
+        <echo
+            level="debug"
+            message="basedir: ${basedir}"/>
+        <echo
+            level="debug"
+            message="eclipse-home: ${eclipse-home}"/>
+        <echo
+            level="debug"
+            message="plugin-path: ${plugin-path}"/>
+        <echo
+            level="debug"
+            message="junit-report-output: ${junit-report-output}"/>
+        <echo
+            level="debug"
+            message="test-output: ${test-output}"/>
+        <echo
+            level="debug"
+            message="buildDirectory: ${buildDirectory}"/>
+        <echo
+            level="debug"
+            message="buildLabel: ${buildLabel}"/>
+        <echo
+            level="debug"
+            message="jvm: ${jvm}"/>
+    </target>
+    <target
+        name="core-test"
+        depends="init">
+        <echo
+            level="info"
+            message="test-type: core-test"/>
+        <ant
+            antfile="${ant.file}"
+            dir="${currentDir}"
+            target="eclipse-test">
+            <property
+                name="application"
+                value="org.eclipse.test.coretestapplication"/>
+        </ant>
+    </target>
+    <target
+        name="ui-test"
+        depends="init">
+        <echo
+            level="info"
+            message="test-type: ui-test"/>
+        <ant
+            antfile="${ant.file}"
+            dir="${currentDir}"
+            target="eclipse-test">
+            <property
+                name="application"
+                value="org.eclipse.test.uitestapplication"/>
+        </ant>
+    </target>
+    <target
+        name="eclipse-test"
+        description="Runs the specified classname as a plug-in test.">
+        <echo
+            level="info"
+            message="Running ${classname}"/>
+        <echo
+            level="debug"
+            message="Result file: ${junit-report-output}/${classname}.xml."/>
+        <echo
+            level="debug"
+            message="DISPLAY: ${env.DISPLAY}"/>
+        <!--
+            If there is not exactly one launcher in the stack, we'd best
+            fail fast, since we are not expecting that, and may indicate
+            an installation that would produce unpredictable results
+        -->
+        <!--
+            requires ant 1.7, and at this point, we're running 1.6 from
+            eclipse ... <condition property="expectedNumberOfLaunchers">
+            <resourcecount when="equal" count="1" > <fileset
+            dir="${testRoot}/eclipse/plugins"> <include
+            name="org.eclipse.equinox.launcher_*.jar" /> </fileset>
+            </resourcecount> </condition> <fail message="Did not find
+            expected number of launcher jars. Check installation."
+            unless="expectedNumberOfLaunchers" />
+        -->
+        <java
+            taskname="suiteUnitTest"
+            fork="true"
+            resultProperty="suitejunitresult"
+            failonerror="false"
+            timeout="${timeout}"
+            dir="${testRoot}/eclipse"
+            jvm="${jvm}"
+            classname="org.eclipse.equinox.launcher.Main">
+            <classpath>
+                <fileset
+                    dir="${testRoot}/eclipse/plugins">
+                    <include
+                        name="org.eclipse.equinox.launcher_*.jar"/>
+                </fileset>
+            </classpath>
+            <jvmarg
+                value="-Xmx512m"/>
+            <jvmarg
+                value="-Dosgi.ws=${env.BASEWS}"/>
+            <jvmarg
+                value="-Dosgi.os=${env.BASEOS}"/>
+            <jvmarg
+                value="-Dosgi.arch=${env.BASEARCH}"/>
+            <jvmarg
+                value="-DbuildLabel=${buildLabel}"/>
+            <jvmarg
+                value="-DbuildDirectory=${buildDirectory}"/>
+            <jvmarg
+                value="-Djava.protocol.handler.pkgs=com.ibm.etools.www.protocol"/>
+            <jvmarg
+                value="-DurlLogLocation=${buildDirectory}/outgoinghttplogfromtests.log"/>
+            <jvmarg
+                value="-Dwtp.autotest.noninteractive=true"/>
+            <jvmarg
+                value="-DPLUGIN_PATH=${plugin-path}"/>
+            <jvmarg
+                line="${extraVMargs}"/>
+            <jvmarg
+                value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}"/>
+            <jvmarg
+                value="-Dprojectname=${projectname}"/>
+            <arg
+                value="-nosplash"/>
+            <arg
+                value="-consolelog"/>
+            <arg
+                value="-debug"/>
+            <arg
+                value="-data"/>
+            <arg
+                value="${data-dir}"/>
+            <arg
+                value="-application"/>
+            <arg
+                value="${application}"/>
+            <arg
+                value="formatter=${formatter},${test-output}"/>
+            <arg
+                value="-testPluginName"/>
+            <arg
+                value="${plugin-name}"/>
+            <arg
+                value="-className"/>
+            <arg
+                value="${classname}"/>
+            <env
+                key="DISPLAY"
+                value="${env.DISPLAY}"/>
+            <redirector
+                output="${junit-report-output}/${classname}.output.txt"
+                error="${junit-report-output}/${classname}.error.txt"/>
+        </java>
+        <echo
+            level="info"
+            message="suitejunitresult: ${suitejunitresult}"/>
+        <antcall
+            target="summarizeFailure"/>
+        <antcall
+            target="collect-results"/>
+    </target>
+    <target
+        name="collect-results">
+        <dirname
+            property="output-dir"
+            file="${test-output}"/>
+        <basename
+            property="output-file-name"
+            file="${test-output}"/>
+        <mkdir
+            dir="${junit-report-output}/xml"/>
+        <junitreport
+            todir="${junit-report-output}/xml"
+            tofile="${classname}.xml">
+            <fileset
+                dir="${output-dir}">
+                <include
+                    name="${output-file-name}"/>
+            </fileset>
+        </junitreport>
+        <mkdir
+            dir="${junit-report-output}/html"/>
+        <xslt
+            style="${testRoot}/JUNIT.XSL"
+            basedir="${junit-report-output}"
+            includes="${classname}.xml"
+            destdir="${junit-report-output}/html"/>
+        <copy
+            file="${data-dir}/.metadata/.log"
+            toFile="${testRoot}/results/consolelogs/metadata-logs/${classname}.workspace.log"
+            overwrite="true"
+            failonError="false"/>
+        <!--
+            todo: this, especially, should be concat (there could be
+            more than one, in theory)
+        -->
+        <copy
+            file="${testRoot}/eclipse/configuration/*.log"
+            toFile="${testRoot}/results/consolelogs/configuration-logs/${classname}.config.log"
+            overwrite="true"
+            failonError="false"/>
+    </target>
+    <target
+        name="collect">
+        <!--
+            deprecated, each test.xml uses it, and we should remove,
+            eventually
+        -->
+    </target>
+    <target
+        name="summarizeFailure"
+        depends="checkFailure"
+        if="doFailure">
+        <echo
+            append="true"
+            file="${buildDirectory}/junitFailureList.log">${plugin-name}${line.separator}</echo>
+    </target>
+    <target
+        name="checkFailure">
+        <condition
+            property="doFailure">
+            <not>
+                <equals
+                    arg1="${suitejunitresult}"
+                    arg2="0"
+                    trim="true"/>
+            </not>
+        </condition>
+    </target>
+</project>
\ No newline at end of file
diff --git a/releng.wtpbuilder/distribution/jsdt.tests/testdependency.xml b/releng.wtpbuilder/distribution/jsdt.tests/testdependency.xml
new file mode 100644
index 0000000..30c9fbf
--- /dev/null
+++ b/releng.wtpbuilder/distribution/jsdt.tests/testdependency.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+    <!--
+        ======================================================================
+        Properties that must be passed to this script: base.install.dir
+        dependencyTargets local.cache.dir dependency.properties
+        ======================================================================
+    -->
+<project
+    name="test"
+    default="get">
+    <property
+        environment="env"/>
+    <!-- required to get proper value of dropinsFolder -->
+    <property
+        name="keyCfgFile"
+        value="${env.PROJECT_BUILDERS}/${projectname}/${env.RELENG}/maps/build.cfg"/>
+    <echo
+        level="debug"
+        message="keyCfgFile: ${keyCfgFile}"/>
+    <property
+        file="${keyCfgFile}"/>
+    <target
+        name="get">
+        <antcall
+            target="getAndInstallDropins">
+            <param
+                name="groupId"
+                value="emf"/>
+        </antcall>
+        <antcall
+            target="getAndInstallDropins">
+            <param
+                name="groupId"
+                value="emfxsd"/>
+        </antcall>
+        <antcall
+            target="getAndInstallDropins">
+            <param
+                name="groupId"
+                value="emfvalidation"/>
+        </antcall>
+        <antcall
+            target="getAndInstallDropins">
+            <param
+                name="groupId"
+                value="gef"/>
+        </antcall>
+        <antcall
+            target="getAndInstallBase">
+            <param
+                name="groupId"
+                value="eclipse"/>
+        </antcall>
+        <antcall
+            target="getAndInstallDropins">
+            <param
+                name="groupId"
+                value="eclipseTestFramework"/>
+        </antcall>
+        <antcall
+            target="getAndInstallDropins">
+            <param
+                name="groupId"
+                value="dtp"/>
+        </antcall>
+        <antcall
+            target="getAndInstallDropins">
+            <param
+                name="groupId"
+                value="eclipse"/>
+        </antcall>
+    </target>
+    <target
+        name="getAndInstallBase">
+        <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>
+    <target
+        name="getAndInstallDropins">
+        <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}${dropinsFolder}"/>
+        </ant>
+    </target>
+</project>
\ No newline at end of file