Bug 321028 - make eclipse.convert available
diff --git a/bundles/org.eclipse.build.tools/.classpath b/bundles/org.eclipse.build.tools/.classpath
index 83e2f97..96c9dd9 100644
--- a/bundles/org.eclipse.build.tools/.classpath
+++ b/bundles/org.eclipse.build.tools/.classpath
@@ -1,12 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" path="src_rss"/>
-	<classpathentry kind="src" path="src_bugzilla"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry exported="true" kind="lib" path="buildTools.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.osgi_3.8.0.v20120123-1419.jar"/>
-	<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.apache.ant_1.8.2.v20120109-1030/lib/ant.jar"/>
-	<classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.apache.ant_1.8.2.v20120109-1030/lib/ant-launcher.jar"/>
+	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6e8427d
--- /dev/null
+++ b/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,111 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.incompatibleJDKLevel=warning
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..b2e4c49
--- /dev/null
+++ b/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=error
diff --git a/bundles/org.eclipse.build.tools/META-INF/MANIFEST.MF b/bundles/org.eclipse.build.tools/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..da8edbc
--- /dev/null
+++ b/bundles/org.eclipse.build.tools/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.build.tools; singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.apache.ant,
+ org.eclipse.osgi
+Bundle-ClassPath: buildTools.jar
diff --git a/bundles/org.eclipse.build.tools/build.properties b/bundles/org.eclipse.build.tools/build.properties
new file mode 100644
index 0000000..ab89df4
--- /dev/null
+++ b/bundles/org.eclipse.build.tools/build.properties
@@ -0,0 +1,5 @@
+bin.includes = plugin.properties,\
+               META-INF/,\
+               plugin.xml,\
+               buildTools.jar,\
+               about.html
diff --git a/bundles/org.eclipse.build.tools/buildTools.jar b/bundles/org.eclipse.build.tools/buildTools.jar
index 77ee760..8ea9c38 100644
--- a/bundles/org.eclipse.build.tools/buildTools.jar
+++ b/bundles/org.eclipse.build.tools/buildTools.jar
Binary files differ
diff --git a/bundles/org.eclipse.build.tools/buildTools.jar.MANIFEST.MF b/bundles/org.eclipse.build.tools/buildTools.jar.MANIFEST.MF
new file mode 100644
index 0000000..58630c0
--- /dev/null
+++ b/bundles/org.eclipse.build.tools/buildTools.jar.MANIFEST.MF
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0

+

diff --git a/bundles/org.eclipse.build.tools/buildTools.jar.jardesc b/bundles/org.eclipse.build.tools/buildTools.jar.jardesc
new file mode 100644
index 0000000..e6a0295
--- /dev/null
+++ b/bundles/org.eclipse.build.tools/buildTools.jar.jardesc
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?><jardesc>
+    <jar path="org.eclipse.build.tools/buildTools.jar"/>
+    <options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.build.tools/buildTools.jar.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
+    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
+    <selectedProjects/>
+    <manifest generateManifest="false" manifestLocation="/org.eclipse.build.tools/buildTools.jar.MANIFEST.MF" manifestVersion="1.0" reuseManifest="true" saveManifest="true" usesManifest="true">
+        <sealing sealJar="false">
+            <packagesToSeal/>
+            <packagesToUnSeal/>
+        </sealing>
+    </manifest>
+    <selectedElements exportClassFiles="true" exportJavaFiles="true" exportOutputFolder="false">
+        <file path="/org.eclipse.build.tools/.classpath"/>
+        <folder path="/org.eclipse.build.tools/META-INF"/>
+        <file path="/org.eclipse.build.tools/build.properties"/>
+        <file path="/org.eclipse.build.tools/.project"/>
+        <file path="/org.eclipse.build.tools/about.html"/>
+        <file path="/org.eclipse.build.tools/plugin.xml"/>
+        <file path="/org.eclipse.build.tools/.gitignore"/>
+        <folder path="/org.eclipse.build.tools/scripts"/>
+        <javaElement handleIdentifier="=org.eclipse.build.tools/src"/>
+        <file path="/org.eclipse.build.tools/plugin.properties"/>
+    </selectedElements>
+</jardesc>
\ No newline at end of file
diff --git a/bundles/org.eclipse.build.tools/data/_README.txt b/bundles/org.eclipse.build.tools/data/_README.txt
deleted file mode 100644
index ab54702..0000000
--- a/bundles/org.eclipse.build.tools/data/_README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-These files are sample data to get you started, generated using 
-the feedPublish.*.properties files in the properties/ folder.
\ No newline at end of file
diff --git a/bundles/org.eclipse.build.tools/data/builds-eclipse-3.3.xml b/bundles/org.eclipse.build.tools/data/builds-eclipse-3.3.xml
deleted file mode 100644
index 3ee1147..0000000
--- a/bundles/org.eclipse.build.tools/data/builds-eclipse-3.3.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>
-
-<feed xmlns="http://www.w3.org/2005/Atom">
-  <title>Eclipse Builds</title>
-  <link href="http://download.eclipse.org/eclipse/downloads/builds-eclipse.xml" rel="self" type="application/atom+xml"/>
-  <updated>2006-11-14T23:54:27Z</updated>
-  <author>
-    <name>Eclipse Build Team</name>
-  </author>
-  <id>http://download.eclipse.org/eclipse/downloads/builds-eclipse.xml</id>
-  <entry>
-    <title>[announce] Eclipse I20060922-0010 (3.3.0.I20060922-0010) is available</title>
-    <link href="http://download.eclipse.org/eclipse/downloads/drops/I20060922-0010"/>
-    <id>http://download.eclipse.org/eclipse/downloads/drops/I20060922-0010</id>
-    <updated>2006-11-14T23:54:27Z</updated>
-    <summary>
-      <build xmlns="http://www.eclipse.org/2006/BuildFeed" branch="HEAD" datetime="20060922-0010" href="http://download.eclipse.org/eclipse/downloads/drops/I20060922-0010" type="I" version="3.3.0">
-        <detail href="http://www.eclipse.org/downloads/download.php?r=1&amp;file=/eclipse/downloads/drops/I20060922-0010/" map="directory.txt"/>
-        <downloads>http://download.eclipse.org/eclipse/downloads/</downloads>
-        <releasenotes>http://download.eclipse.org/eclipse/downloads/drops/I20060922-0010/buildNotes.php
-          </releasenotes>
-        <releases>
-          <release arch="x86" os="win32" type="SDK" ws="win">eclipse-SDK-I20060922-0010-win32.zip</release>
-          <release arch="x86" os="linux" type="SDK" ws="gtk">eclipse-SDK-I20060922-0010-linux-gtk.tar.gz</release>
-        </releases>
-        <tests>
-          <test href="http://download.eclipse.org/eclipse/downloads/drops/I20060922-0010/testResults.php" type="junit">
-            <result arch="x86" os="win32" ws="win">UNKNOWN</result>
-            <result arch="x86" os="linux" ws="gtk">UNKNOWN</result>
-            <result arch="x86_64" os="linux" ws="gtk">UNKNOWN</result>
-            <result arch="ppc" os="linux" ws="gtk">UNKNOWN</result>
-            <result arch="x86" os="linux" ws="motif">UNKNOWN</result>
-            <result arch="x86" os="solaris8" ws="gtk">UNKNOWN</result>
-            <result arch="x86" os="aix" ws="motif">UNKNOWN</result>
-            <result arch="x86" os="hp-ux" ws="motif">UNKNOWN</result>
-            <result arch="ppc" os="macosx" ws="carbon">UNKNOWN</result>
-          </test>
-          <test href="http://download.eclipse.org/eclipse/downloads/drops/I20060922-0010/performance/performance.php" type="performance">
-            <result arch="x86" id="RHEL4-3GHz-2.5GB" os="linux" ws="gtk">PENDING</result>
-            <result arch="x86" id="winxp-3GHz-2GB" os="win32" ws="win">UNKNOWN</result>
-            <result arch="x86" id="RHEL3-3GHz-2GB" os="linux" ws="gtk">UNKNOWN</result>
-            <result arch="x86" id="winxp-2GHz-512MB" os="win32" ws="win">UNKNOWN</result>
-          </test>
-        </tests>
-        <coordinated status="COMPLETE"/>
-      </build>
-    </summary>
-  </entry>
-</feed>
diff --git a/bundles/org.eclipse.build.tools/data/builds-emf-2.3.xml b/bundles/org.eclipse.build.tools/data/builds-emf-2.3.xml
deleted file mode 100644
index 4b3f599..0000000
--- a/bundles/org.eclipse.build.tools/data/builds-emf-2.3.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>
-
-<feed xmlns="http://www.w3.org/2005/Atom">
-  <title>EMF Builds</title>
-  <link href="http://download.eclipse.org/tools/emf/feeds/builds.xml" rel="self" type="application/atom+xml"/>
-  <updated>2006-11-14T23:07:56Z</updated>
-  <author>
-    <name>EMF Build Team</name>
-  </author>
-  <id>http://download.eclipse.org/tools/emf/feeds/builds.xml</id>
-  <entry>
-    <title>[announce] EMF 2.3.0M3 (S200611091546) is available</title>
-    <link href="http://www.eclipse.org/emf/downloads/?showAll=1&amp;hlbuild=S200611091546#S200611091546"/>
-    <id>http://www.eclipse.org/emf/downloads/?showAll=1&amp;hlbuild=S200611091546#S200611091546</id>
-    <updated>2006-11-14T23:07:56Z</updated>
-    <summary>
-      <build xmlns="http://www.eclipse.org/2006/BuildFeed" branch="HEAD" datetime="200611091546" href="http://www.eclipse.org/emf/downloads/?showAll=1&amp;hlbuild=S200611091546#S200611091546" type="S" version="2.3.0">
-        <detail config="build.cfg" href="http://www.eclipse.org/downloads/download.php?r=1&amp;file=/tools/emf/downloads/drops/2.3.0/S200611091546/" log="buildlog.txt" map="directory.txt"/>
-        <update>http://download.eclipse.org/tools/emf/updates/</update>
-        <downloads>http://www.eclipse.org/emf/downloads/</downloads>
-        <releasenotes>http://www.eclipse.org/emf/news/release-notes.php?version=2.3.0
-          </releasenotes>
-        <releases>
-          <release arch="ALL" os="ALL" type="SDK" ws="ALL">emf-sdo-xsd-SDK-2.3.0M3.zip</release>
-        </releases>
-        <tests>
-          <test href="http://www.eclipse.org/downloads/download.php?r=1&amp;file=/tools/emf/downloads/drops/2.3.0/S200611091546/testResults.php" type="junit">
-            <result arch="ALL" os="ALL" ws="ALL">PASS</result>
-          </test>
-        </tests>
-        <dependencies>
-          <dependency>http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/M20060919-1045/eclipse-SDK-M20060919-1045-linux-gtk.tar.gz</dependency>
-        </dependencies>
-        <coordinated status="COMPLETE"/>
-      </build>
-    </summary>
-  </entry>
-</feed>
diff --git a/bundles/org.eclipse.build.tools/data/builds-uml2-uml-2.1.xml b/bundles/org.eclipse.build.tools/data/builds-uml2-uml-2.1.xml
deleted file mode 100644
index 0ae3ea4..0000000
--- a/bundles/org.eclipse.build.tools/data/builds-uml2-uml-2.1.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>
-
-<feed xmlns="http://www.w3.org/2005/Atom">
-  <title>UML2 Builds</title>
-  <link href="http://download.eclipse.org/modeling/mdt/feeds/builds-uml2-uml-2.0.xml" rel="self" type="application/atom+xml"/>
-  <updated>2006-11-14T23:12:21Z</updated>
-  <author>
-    <name>UML2 Build Team</name>
-  </author>
-  <id>http://download.eclipse.org/modeling/mdt/feeds/builds-uml2-uml-2.0.xml</id>
-  <entry>
-    <title>[announce] UML2 2.0.1 M200609210850 is available</title>
-    <link href="http://www.eclipse.org/modeling/mdt/downloads/?project=uml2-uml&amp;showAll=1&amp;hlbuild=M200609210850#M200609210850"/>
-    <id>http://www.eclipse.org/modeling/mdt/downloads/?project=uml2-uml&amp;showAll=1&amp;hlbuild=M200609210850#M200609210850</id>
-    <updated>2006-11-14T23:12:21Z</updated>
-    <summary>
-      <build xmlns="http://www.eclipse.org/2006/BuildFeed" branch="HEAD" datetime="200609210850" href="http://www.eclipse.org/modeling/mdt/downloads/?project=uml2-uml&amp;showAll=1&amp;hlbuild=M200609210850#M200609210850" type="M" version="2.0.1">
-        <detail config="build.cfg" href="http://www.eclipse.org/downloads/download.php?r=1&amp;file=/modeling/mdt/uml2-uml/downloads/drops/2.0.1/M200609210850/" log="buildlog.txt" map="directory.txt"/>
-        <update>http://download.eclipse.org/modeling/mdt/updates/?project=uml2-uml</update>
-        <downloads>http://www.eclipse.org/modeling/mdt/downloads/?project=uml2-uml#uml2-uml</downloads>
-        <releasenotes>http://www.eclipse.org/modeling/mdt/news/release-notes.php?project=uml2-uml&amp;amp;version=2.0.1
-          </releasenotes>
-        <releases>
-          <release arch="ALL" os="ALL" type="SDK" ws="ALL">uml2-SDK-.zip</release>
-        </releases>
-        <tests>
-          <test href="http://www.eclipse.org/downloads/download.php?r=1&amp;file=/modeling/mdt/uml2-uml/downloads/drops/2.0.1/M200609210850/testResults.php" type="junit">
-            <result arch="ALL" os="ALL" ws="ALL">PASS</result>
-          </test>
-        </tests>
-        <dependencies>
-          <dependency>http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/M20060919-1045/eclipse-SDK-M20060919-1045-linux-gtk.tar.gz</dependency>
-          <dependency>http://www.eclipse.org/downloads/download.php?file=/tools/emf/downloads/drops/2.2.1/S200609210005/emf-sdo-xsd-SDK-2.2.1RC2.zip</dependency>
-        </dependencies>
-        <coordinated status="COMPLETE"/>
-      </build>
-    </summary>
-  </entry>
-</feed>
diff --git a/bundles/org.eclipse.build.tools/plugin.properties b/bundles/org.eclipse.build.tools/plugin.properties
new file mode 100644
index 0000000..1f7af99
--- /dev/null
+++ b/bundles/org.eclipse.build.tools/plugin.properties
@@ -0,0 +1,2 @@
+
+Bundle-Name = Ant tasks used during platform builds
\ No newline at end of file
diff --git a/bundles/org.eclipse.build.tools/plugin.xml b/bundles/org.eclipse.build.tools/plugin.xml
index 734b71f..ed29b43 100644
--- a/bundles/org.eclipse.build.tools/plugin.xml
+++ b/bundles/org.eclipse.build.tools/plugin.xml
@@ -1,18 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?>
-<plugin
-   id="org.eclipse.build.tools"
-   name="org.eclipse.build.tools"
-   version="1.0.0">
-
-   <runtime>
-   </runtime>
+<plugin>
 
     <extension
          point="org.eclipse.ant.core.extraClasspathEntries">
       <extraClasspathEntry
             library="buildTools.jar">
-      </extraClasspathEntry>   
+      </extraClasspathEntry>
    </extension>
 	<!-- Tasks -->
    <extension point="org.eclipse.ant.core.antTasks">
diff --git a/bundles/org.eclipse.build.tools/properties/UpdateBugStateTask.properties b/bundles/org.eclipse.build.tools/properties/UpdateBugStateTask.properties
deleted file mode 100644
index b6c21ad..0000000
--- a/bundles/org.eclipse.build.tools/properties/UpdateBugStateTask.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#this file should be loaded by UpdateBugStateTask.xml when running
-#it is expected to contain login and logincookie, run BugzillaLogin.sh to generate these
-#see below for sample syntax
-
-login=8130
-logincookie=982276000
\ No newline at end of file
diff --git a/bundles/org.eclipse.build.tools/properties/_README.txt b/bundles/org.eclipse.build.tools/properties/_README.txt
deleted file mode 100644
index 959c36c..0000000
--- a/bundles/org.eclipse.build.tools/properties/_README.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-These files are examples to get you started. Since you cannot commit 
-your files into CVS here, just point the scripts at your own properties
-files, similar in content to these, and run accordingly. 
-
-You can also run the Ant scripts without properties files if you set 
-the attributes statically in your ant script.
-
-Or, you can call the Tasks themselves within another Java class. 
-RSSFeedAddEntryTask is an example of this, in that it optionally 
-calls RSSFeedCreateFeedTask if no existing feed file already exists. 
-RSSFeedGetPropertyTask is a wrapper for RSSFeedUpdateEntryTask, which 
-also queries for an attribute value, but instead of changing it, 
-simply returns it.
\ No newline at end of file
diff --git a/bundles/org.eclipse.build.tools/properties/feedPublish.eclipse.properties b/bundles/org.eclipse.build.tools/properties/feedPublish.eclipse.properties
deleted file mode 100644
index 3629240..0000000
--- a/bundles/org.eclipse.build.tools/properties/feedPublish.eclipse.properties
+++ /dev/null
@@ -1,108 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# properties for: RSSFeedCreateFeedTask.java, RSSFeedAddEntryTask.java, RSSFeedGetPropertyTask.java, RSSFeedUpdateEntryTask.java, RSSFeedPublisherTask.java
-
-# NOTE: if values are commented out (#), they must be passed in to Ant via commandline instead (eg., from emf's promoteToEclipse.sh when promoting a build)
-
-# one of 0|1|2
-debug=1
-
-# if file does not exist, it will be created; if it does, it will be modified
-#file=/builds/transfer/files/master/downloads/builds-eclipse-3.3.xml
-file=../data/builds-eclipse-3.4.xml
-
-# required
-project=Eclipse
-branch=HEAD
-version=3.3.0
-buildID=I20060922-0010
-feedURL=http://download.eclipse.org/eclipse/downloads/builds-eclipse.xml
-buildURL=http://download.eclipse.org/eclipse/downloads/drops/%%buildID%%
-
-# optional build alias, like 3.3M3
-buildAlias=I20060922-0010
-
-# optional build type; one of: N, I, M, S, R; if not provided, will be pulled from buildID above
-buildType=
-
-# optional
-buildDetailURL=http://www.eclipse.org/downloads/download.php?r=1&file=/eclipse/downloads/drops/%%buildID%%/
-buildConfigURL=
-buildLogURL=
-buildMapURL=directory.txt
-
-# optional
-releaseNotesURL=http://download.eclipse.org/eclipse/downloads/drops/%%buildID%%/buildNotes.php
-updateManagerURL=
-downloadsURL=http://download.eclipse.org/eclipse/downloads/
-
-# optional: one of NONE|UNSIGNED|SIGNREADY|BUILDREADY|SIGNED 
-jarSigningStatus=
-
-# optional: one of NONE|BUILDCOMPLETE|UMSITEREADY|CALLISTOSITEREADY|COMPLETE, or 
-coordinatedStatus=
-# optional: timestamp when will be ready (eg., 2006-05-02T20:50:00Z), or 
-# project on which you're waiting (eg., TPTP)
-coordinatedDetails=
-
-# comma or space separated values
-dependencyURLs=
-
-#optional
-JUnitTestURL=http://download.eclipse.org/eclipse/downloads/drops/%%buildID%%/testResults.php
-performanceTestURL=http://download.eclipse.org/eclipse/downloads/drops/%%buildID%%/performance/performance.php
-APITestURL=
-
-# values to set for test results in quints of id,os,ws,arch,status,id,os,ws,arch,status,... 
-JUnitTestResults=\
-0,win32,win,x86,UNKNOWN,\
-0,linux,gtk,x86,UNKNOWN,\
-0,linux,gtk,x86_64,UNKNOWN,\
-0,linux,gtk,ppc,UNKNOWN,\
-0,solaris8,gtk,x86,UNKNOWN,\
-0,aix,motif,x86,UNKNOWN,\
-0,hp-ux,motif,x86,UNKNOWN,\
-0,macosx,carbon,ppc,UNKNOWN
-performanceTestResults=\
-RHEL4-3GHz-2.5GB,linux,gtk,x86,UNKNOWN,\
-winxp-3GHz-2GB,win32,win,x86,UNKNOWN,\
-RHEL3-3GHz-2GB,linux,gtk,x86,UNKNOWN,\
-winxp-2GHz-512MB,win32,win,x86,UNKNOWN
-APITestResults=
-
-# values to set for release bundles in quints of os,ws,arch,name/type,filename,os,ws,arch,name/type,filename... 
-# only need the filename; the full http URL can be assembled from buildURL + "/download.php?dropFile=" + filename or buildURL (switched to ftp://) + "/" + filename
-# eg., win32,win,SDK,eclipse-SDK-%%buildAlias%%-win32.zip,linux,gtk,SDK,eclipse-SDK-%%buildAlias%%-linux-gtk.tar.gz
-Releases=\
-win32,win,x86,SDK,eclipse-SDK-%%buildAlias%%-win32.zip,\
-linux,gtk,x86,SDK,eclipse-SDK-%%buildAlias%%-linux-gtk.tar.gz
-
-########################################
-
-# options for publishing files - need either an scp target or a cvs root/path, or both
-# file (above) is required too
-
-# /path/to/cvs/executable
-cvsExec=/usr/bin/cvs
-# user@cvsServer:/path/to/cvs/root
-cvsRoot=
-# cvs/module/path
-cvsPath=www/news
-# /tmp/folder/path/for/checkout
-cvsTemp=
-
-# /path/to/scp/executable
-scpExec=/usr/bin/scp
-# user@server:/path/to/destination/file.xml - destintion folder MUST ALREADY EXIST
-scpTarget=
-
-# optionally, if the target folder might not exist, you can use ssh to create it before scp'ing the file - only runs if sshMakeDirCommand is defined
-sshExec=/usr/bin/ssh
diff --git a/bundles/org.eclipse.build.tools/properties/feedPublish.emf.properties b/bundles/org.eclipse.build.tools/properties/feedPublish.emf.properties
deleted file mode 100644
index 314e027..0000000
--- a/bundles/org.eclipse.build.tools/properties/feedPublish.emf.properties
+++ /dev/null
@@ -1,100 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# properties for: RSSFeedCreateFeedTask.java, RSSFeedAddEntryTask.java, RSSFeedGetPropertyTask.java, RSSFeedUpdateEntryTask.java, RSSFeedPublisherTask.java
-
-# NOTE: if values are commented out (#), they must be passed in to Ant via commandline instead (eg., from emf's promoteToEclipse.sh when promoting a build)
-
-# one of 0|1|2
-debug=0
-
-# if file does not exist, it will be created; if it does, it will be modified
-#file=/var/www/emf/feeds/builds-emf-2.3.xml
-file=../data/builds-emf-2.3.xml
-
-# required
-project=EMF
-branch=HEAD
-version=2.3.0
-buildID=S200611091546
-feedURL=http://download.eclipse.org/tools/emf/feeds/builds-emf-2.3.xml
-buildURL=http://www.eclipse.org/emf/downloads/?showAll=1&hlbuild=%%buildID%%#%%buildID%%
-
-# optional build alias, like 2.2.1RC2
-buildAlias=2.3.0M3
-
-# optional build type; one of: N, I, M, S, R; if not provided, will be pulled from buildID above
-buildType=
-
-# optional
-buildDetailURL=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/emf/downloads/drops/%%version%%/%%buildID%%/
-buildConfigURL=build.cfg
-buildLogURL=buildlog.txt
-buildMapURL=directory.txt
-
-# optional
-releaseNotesURL=http://www.eclipse.org/emf/news/release-notes.php?version=%%version%%
-updateManagerURL=http://download.eclipse.org/tools/emf/updates/
-downloadsURL=http://www.eclipse.org/emf/downloads/
-
-# optional: one of NONE|UNSIGNED|SIGNREADY|BUILDREADY|SIGNED 
-jarSigningStatus=
-
-# optional: one of NONE|BUILDCOMPLETE|UMSITEREADY|CALLISTOSITEREADY|COMPLETE 
-coordinatedStatus=CALLISTOSITEREADY
-# optional: timestamp when will be ready (eg., 2006-05-02T20:50:00Z), or 
-# project on which you're waiting (eg., TPTP)
-coordinatedDetails=
-
-# comma or space separated values
-dependencyURLs=http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/M20060919-1045/eclipse-SDK-M20060919-1045-linux-gtk.tar.gz
-
-# optional
-JUnitTestURL=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/emf/downloads/drops/%%version%%/%%buildID%%/testResults.php
-performanceTestURL=
-APITestURL=
-
-# values to set for test results in quints of id,os,ws,arch,status,id,os,ws,arch,status,... 
-JUnitTestResults=0,ALL,ALL,ALL,PASS
-performanceTestResults=
-APITestResults=
-
-# values to set for release bundles in quints of os,ws,arch,name/type,filename,os,ws,arch,name/type,filename... 
-# only need the filename; the full http URL can be assembled from buildURL + "/download.php?dropFile=" + filename or buildURL (switched to ftp://) + "/" + filename
-# eg., ALL,ALL,ALL,SDK,emf-sdo-xsd-SDK-%%buildAlias%%.zip
-Releases=ALL,ALL,ALL,SDK,emf-sdo-xsd-SDK-%%buildAlias%%.zip
-
-########################################
-
-# options for publishing files - need either an scp target or a cvs root/path, or both
-# file (above) is required too
-
-# /path/to/cvs/executable
-cvsExec=/usr/bin/cvs
-# user@cvsServer:/path/to/cvs/root
-cvsRoot=nickb@dev.eclipse.org:/cvsroot/org.eclipse
-# cvs/module/path
-cvsPath=www/emf/feeds
-# /tmp/folder/path/for/checkout
-cvsTemp=/tmp/tmp-RSSFeedPublisherTask-emf-nickb
-
-# /path/to/scp/executable
-scpExec=/usr/bin/scp
-# user@server:/path/to/destination/folder/ - destination folder MUST ALREADY EXIST
-scpTarget=nickb@download1.eclipse.org:/home/data/httpd/download.eclipse.org/tools/emf/feeds/
-
-# optionally, if the target folder might not exist, you can use ssh to create it before scp'ing the file
-sshExec=/usr/bin/ssh
-
-# for local testing purposes only
-#cvsRoot=nickb@dbzi:/home/cvs
-#cvsPath=tmp/foo
-#scpTarget=nickb@dbzi:/tmp/foo/
-
diff --git a/bundles/org.eclipse.build.tools/properties/feedPublish.uml2.properties b/bundles/org.eclipse.build.tools/properties/feedPublish.uml2.properties
deleted file mode 100644
index 7ca324f..0000000
--- a/bundles/org.eclipse.build.tools/properties/feedPublish.uml2.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# properties for: RSSFeedCreateFeedTask.java, RSSFeedAddEntryTask.java, RSSFeedGetPropertyTask.java, RSSFeedUpdateEntryTask.java, RSSFeedPublisherTask.java
-
-# NOTE: if values are commented out (#), they must be passed in to Ant via commandline instead (eg., from emf's promoteToEclipse.sh when promoting a build)
-
-# one of 0|1|2
-debug=0
-
-# if file does not exist, it will be created; if it does, it will be modified
-#file=/var/www/modeling/mdt/feeds/builds-uml2-uml-2.1.xml
-file=../data/builds-uml2-uml-2.1.xml
-
-# required
-project=UML2
-branch=HEAD
-version=2.1.0
-buildID=I200611141702
-feedURL=http://download.eclipse.org/modeling/mdt/feeds/builds-uml2-uml-2.1.xml
-buildURL=http://www.eclipse.org/modeling/mdt/downloads/?project=uml2-uml&showAll=1&hlbuild=%%buildID%%#%%buildID%%
-
-# optional build alias, like 2.0.1RC1
-buildAlias=
-
-# optional build type; one of: N, I, M, S, R; if not provided, will be pulled from buildID above
-buildType=
-
-# optional
-buildDetailURL=http://www.eclipse.org/downloads/download.php?r=1&file=/modeling/mdt/uml2-uml/downloads/drops/%%version%%/%%buildID%%/
-buildConfigURL=build.cfg
-buildLogURL=buildlog.txt
-buildMapURL=directory.txt
-
-# optional
-releaseNotesURL=http://www.eclipse.org/modeling/mdt/news/release-notes.php?project=uml2-uml&amp;version=%%version%%
-updateManagerURL=http://download.eclipse.org/modeling/mdt/updates/?project=uml2-uml
-downloadsURL=http://www.eclipse.org/modeling/mdt/downloads/?project=uml2-uml#uml2-uml
-
-# optional: one of NONE|UNSIGNED|SIGNREADY|BUILDREADY|SIGNED 
-jarSigningStatus=
-
-# optional: one of NONE|BUILDCOMPLETE|UMSITEREADY|CALLISTOSITEREADY|COMPLETE 
-coordinatedStatus=
-# optional: timestamp when will be ready (eg., 2006-05-02T20:50:00Z), or 
-# project on which you're waiting (eg., TPTP)
-coordinatedDetails=
-
-# comma or space separated values
-dependencyURLs=http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/M20060919-1045/eclipse-SDK-M20060919-1045-linux-gtk.tar.gz http://www.eclipse.org/downloads/download.php?file=/tools/emf/downloads/drops/2.2.1/S200609210005/emf-sdo-xsd-SDK-2.2.1RC2.zip
-
-# optional
-JUnitTestURL=http://www.eclipse.org/downloads/download.php?r=1&file=/modeling/mdt/uml2-uml/downloads/drops/%%version%%/%%buildID%%/testResults.php
-performanceTestURL=
-APITestURL=
-
-# values to set for test results in quints of id,os,ws,arch,status,id,os,ws,arch,status,... 
-JUnitTestResults=0,ALL,ALL,ALL,PASS
-performanceTestResults=
-APITestResults=
-
-# values to set for release bundles in quints of os,ws,arch,name/type,filename,os,ws,arch,name/type,filename... 
-# only need the filename; the full http URL can be assembled from buildURL + "/download.php?dropFile=" + filename or buildURL (switched to ftp://) + "/" + filename
-# eg., ALL,ALL,ALL,SDK,uml2-SDK-%%buildAlias%%.zip
-Releases=ALL,ALL,ALL,SDK,uml2-SDK-%%buildAlias%%.zip
-
-########################################
-
-# options for publishing files - need either an scp target or a cvs root/path, or both
-# file (above) is required too
-
-# /path/to/cvs/executable
-cvsExec=/usr/bin/cvs
-# user@cvsServer:/path/to/cvs/root
-cvsRoot=khussey@dev.eclipse.org:/cvsroot/org.eclipse
-# cvs/module/path
-cvsPath=www/uml2/feeds
-# /tmp/folder/path/for/checkout
-cvsTemp=/tmp/RSSFeedPublisherTask-uml2-khussey
-
-# /path/to/scp/executable
-scpExec=/usr/bin/scp
-# user@server:/path/to/destination/folder/ - destination folder MUST ALREADY EXIST
-scpTarget=khussey@download1.eclipse.org:/home/data/httpd/download.eclipse.org/tools/uml2/feeds/
-
-# optionally, if the target folder might not exist, you can use ssh to create it before scp'ing the file - only runs if sshMakeDirCommand is defined
-sshExec=/usr/bin/ssh
diff --git a/bundles/org.eclipse.build.tools/properties/feedWatch.emf.properties b/bundles/org.eclipse.build.tools/properties/feedWatch.emf.properties
deleted file mode 100644
index ad8f528..0000000
--- a/bundles/org.eclipse.build.tools/properties/feedWatch.emf.properties
+++ /dev/null
@@ -1,96 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# properties for RSSFeedWatcherTask.java
-
-# one of 0|1|2
-debug=0
-
-# if file does not exist, it will be created; if it does, it will be modified
-file=../data/builds-eclipse-3.4.xml
-
-# required URL for the feed to check
-feedURL=http://download.eclipse.org/downloads/builds-eclipse.xml
-
-# Feed Watch Actions - must be defined as triplets of [xpath0]; [script0]; [commandline0]; [xpath1]; [script1]; [commandline1]; ...
-# must be separated by semi-colons. Line breaks are permitted for clarity and will be String.trim()'d
-feedWatchActions=\
-//*[name()='entry'][1]/*/*[name()='build']/@href;null;null;\
-//*[name()='entry'][1]/*/*[name()='build']/*[name()='releases']/*[@os='linux'][@ws='gtk'][@type='SDK']/text();null;null;\
-//*[name()='entry'][1]/*/*[name()='build']/@type;null;null;\
-
-# PASSING ANT TASK RESULTS TO EXTERNAL SCRIPT AS COMMANDLINE ARGUMENTS
-######################################################################
-
-# The <exec> task that is run within RSSFeedWatcherTask.java, eg.
-#   <exec executable="/path/to/executable"><arg line="-somearg value -someotherarg anothervalue"/></exec>
-# will be passed some default commandline arguments BEFORE any you might want to specify as well (so that you can override them if you wish). 
-
-# For example, if you have these properties set in this file:
-#   debug=1
-#   feedWatchActions=//*[name() = 'entry'][1]/*[name() = 'updated']/text(); ../scripts_rss/sendEmailAlert.sh; -debug 0
-# you will execute the following under the covers of the org.eclipse.releng.services.RSSFeedWatcherTask:
-#   <exec executable="../scripts_rss/sendEmailAlert.sh">
-#     <arg line="-debug 1 -feedURL http://www.eclipse.org/emf/feeds/builds.xml 
-#       -xpath "/*[name() = 'feed']/*[name() = 'updated']/text()" 
-#       -oldvalue "2006-05-04T12:14:33Z" -newvalue "2006-05-11T12:14:33Z" -debug 0"/>
-#   </exec>
-
-# Therefore, you can use these values in the script that you execute (be it sending an email or starting a build or whatever). 
-# If you do NOT want to pass arguments to your executable, use the word "null" instead. This will NOT be passed to your script.
-
-
-# CHECKING ANT TASK RESULTS WITHIN ANT SCRIPT
-#############################################
-
-# If you want to run some <exec> and then check the results of that execution, you can do so in the ant script that calls RSSFeedWatcherTask. 
-# The following properties will be set after you run the task:
-
-#			feedWatchAction.Result.0       - The result returned from the <exec> task; if set, something bad happened
-#			feedWatchAction.Error.0        - Details about the error that occurred, if set, something bad happened
-#			feedWatchAction.Output.0       - Console output from your <exec>, if any; 
-#				this will depend on what you run in response to a feed change, and if that process produces console output
-#			feedWatchAction.OldValue.0 - The original value of the node you asked for, from the previous cached version of the feed
-#			feedWatchAction.NewValue.0 - The changed value of the node you asked for, from the latest version of the feed; 
-#				if you asked for changes to the test status for performance tests, this could be "PASS"; 
-#				if you asked for any changes to the feed, this will be the XML datestamp of the last update, eg: 2006-05-04T12:14:33Z
-#				
-#			If you are watching for more than one condition, you can check for feedWatchAction.Result.0, feedWatchAction.Result.1, feedWatchAction.Result.2, etc.
-
-
-# RUNNING NO EXTERNAL <exec> 
-#############################################
-
-# If you only want to check for changes to the feed and handle the response yourself within Ant instead of an <exec>,
-# simply pass in the executable as "null" to prevent any shell execution from occurring. For example:
-
-# feedWatchActions=//*[name() = 'entry'][1]/*[name() = 'updated']/text(); null; null
-
-# If the node is found and the feed has been changed, the property feedWatchAction.NewValue.0 
-# (and/or feedWatchAction.NewValue.1, feedWatchAction.NewValue.2, etc.) will be set to the new changed value.
-
-
-# XPATH EXAMPLES - SAMPLE NODES TO WATCH FOR CHANGES
-####################################################
-
-# 1. to watch for ANY change in the feed, check the <feed>'s <updated> node (and respond with an email, passing -debug 1 to the mail script)
-# feedWatchActions=/*[name() = 'feed']/*[name() = 'updated']/text(); ../scripts_rss/sendEmailAlert.sh; -debug 1
-
-# 2. to watch for ANY changes in the current build, check the first <entry>'s <updated> node (and respond with an email, no commandline flags)
-# feedWatchActions=//*[name() = 'entry'][1]/*[name() = 'updated']/text(); ../scripts_rss/sendEmailAlert.sh; null
-
-# 3a. to watch for coordinated status changes, check the first <entry>'s <build> node's coordinated="" attribute (and respond using some custom Ant script)
-# feedWatchActions=//*[name() = 'entry'][1]/*/*/*[name() = 'coordinated']/@status; null; null
-
-# 3b. to watch for jar signing status changes, check the first <entry>'s <build> node's jars="" attribute (and respond using some custom Ant script)
-# feedWatchActions=//*[name() = 'entry'][1]/*/*[name() = 'build']/@jars; null; null
-
-# 3c. to watch for changes in the current build's performance test results on linux-gtk (and respond using some custom Ant script)
-# feedWatchActions=//*[name() = 'entry'][1]/*/*/*/*[@type = 'performance']/*[name() = 'result'][@os = 'linux'][@ws = 'gtk']/text(); null; null
diff --git a/bundles/org.eclipse.build.tools/properties/feedWatch.uml2.properties b/bundles/org.eclipse.build.tools/properties/feedWatch.uml2.properties
deleted file mode 100644
index 8f76d74..0000000
--- a/bundles/org.eclipse.build.tools/properties/feedWatch.uml2.properties
+++ /dev/null
@@ -1,93 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# properties for RSSFeedWatcherTask.java
-
-# one of 0|1|2
-debug=2
-
-# if file does not exist, it will be created; if it does, it will be modified
-file=../data/builds-emf-2.3.xml
-
-# required URL for the feed to check
-feedURL=http://www.eclipse.org/emf/feeds/builds-emf-2.3.xml
-
-# Feed Watch Actions - must be defined as triplets of [xpath0]; [script0]; [commandline0]; [xpath1]; [script1]; [commandline1]; ...
-# must be separated by semi-colons. Line breaks are permitted for clarity and will be String.trim()'d
-feedWatchActions=/*[name() = 'feed']/*[name() = 'updated']/text(); null; null
-
-# PASSING ANT TASK RESULTS TO EXTERNAL SCRIPT AS COMMANDLINE ARGUMENTS
-######################################################################
-
-# The <exec> task that is run within RSSFeedWatcherTask.java, eg.
-#   <exec executable="/path/to/executable"><arg line="-somearg value -someotherarg anothervalue"/></exec>
-# will be passed some default commandline arguments BEFORE any you might want to specify as well (so that you can override them if you wish). 
-
-# For example, if you have these properties set in this file:
-#   debug=1
-#   feedWatchActions=//*[name() = 'entry'][1]/*[name() = 'updated']/text(); ../scripts_rss/sendEmailAlert.sh; -debug 0
-# you will execute the following under the covers of the org.eclipse.releng.services.RSSFeedWatcherTask:
-#   <exec executable="../scripts_rss/sendEmailAlert.sh">
-#     <arg line="-debug 1 -feedURL http://www.eclipse.org/emf/feeds/builds.xml 
-#       -xpath "/*[name() = 'feed']/*[name() = 'updated']/text()" 
-#       -oldvalue "2006-05-04T12:14:33Z" -newvalue "2006-05-11T12:14:33Z" -debug 0"/>
-#   </exec>
-
-# Therefore, you can use these values in the script that you execute (be it sending an email or starting a build or whatever). 
-# If you do NOT want to pass arguments to your executable, use the word "null" instead. This will NOT be passed to your script.
-
-
-# CHECKING ANT TASK RESULTS WITHIN ANT SCRIPT
-#############################################
-
-# If you want to run some <exec> and then check the results of that execution, you can do so in the ant script that calls RSSFeedWatcherTask. 
-# The following properties will be set after you run the task:
-
-#			feedWatchAction.Result.0       - The result returned from the <exec> task; if set, something bad happened
-#			feedWatchAction.Error.0        - Details about the error that occurred, if set, something bad happened
-#			feedWatchAction.Output.0       - Console output from your <exec>, if any; 
-#				this will depend on what you run in response to a feed change, and if that process produces console output
-#			feedWatchAction.OldValue.0 - The original value of the node you asked for, from the previous cached version of the feed
-#			feedWatchAction.NewValue.0 - The changed value of the node you asked for, from the latest version of the feed; 
-#				if you asked for changes to the test status for performance tests, this could be "PASS"; 
-#				if you asked for any changes to the feed, this will be the XML datestamp of the last update, eg: 2006-05-04T12:14:33Z
-#				
-#			If you are watching for more than one condition, you can check for feedWatchAction.Result.0, feedWatchAction.Result.1, feedWatchAction.Result.2, etc.
-
-
-# RUNNING NO EXTERNAL <exec> 
-#############################################
-
-# If you only want to check for changes to the feed and handle the response yourself within Ant instead of an <exec>,
-# simply pass in the executable as "null" to prevent any shell execution from occurring. For example:
-
-# feedWatchActions=//*[name() = 'entry'][1]/*[name() = 'updated']/text(); null; null
-
-# If the node is found and the feed has been changed, the property feedWatchAction.NewValue.0 
-# (and/or feedWatchAction.NewValue.1, feedWatchAction.NewValue.2, etc.) will be set to the new changed value.
-
-
-## XPATH EXAMPLES - SAMPLE NODES TO WATCH FOR CHANGES
-####################################################
-
-# 1. to watch for ANY change in the feed, check the <feed>'s <updated> node (and respond with an email, passing -debug 1 to the mail script)
-# feedWatchActions=/*[name() = 'feed']/*[name() = 'updated']/text(); ../scripts_rss/sendEmailAlert.sh; -debug 1
-
-# 2. to watch for ANY changes in the current build, check the first <entry>'s <updated> node (and respond with an email, no commandline flags)
-# feedWatchActions=//*[name() = 'entry'][1]/*[name() = 'updated']/text(); ../scripts_rss/sendEmailAlert.sh; null
-
-# 3a. to watch for coordinated status changes, check the first <entry>'s <build> node's coordinated="" attribute (and respond using some custom Ant script)
-# feedWatchActions=//*[name() = 'entry'][1]/*/*/*[name() = 'coordinated']/@status; null; null
-
-# 3b. to watch for jar signing status changes, check the first <entry>'s <build> node's jars="" attribute (and respond using some custom Ant script)
-# feedWatchActions=//*[name() = 'entry'][1]/*/*[name() = 'build']/@jars; null; null
-
-# 3c. to watch for changes in the current build's performance test results on linux-gtk (and respond using some custom Ant script)
-# feedWatchActions=//*[name() = 'entry'][1]/*/*/*/*[@type = 'performance']/*[name() = 'result'][@os = 'linux'][@ws = 'gtk']/text(); null; null
diff --git a/bundles/org.eclipse.build.tools/schema/_README.txt b/bundles/org.eclipse.build.tools/schema/_README.txt
deleted file mode 100644
index 8da3676..0000000
--- a/bundles/org.eclipse.build.tools/schema/_README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-These files are for reference, but are not required to run the 
-Ant scripts + tasks.
\ No newline at end of file
diff --git a/bundles/org.eclipse.build.tools/schema/atom10_build.xsd b/bundles/org.eclipse.build.tools/schema/atom10_build.xsd
deleted file mode 100644
index 93b3ed5..0000000
--- a/bundles/org.eclipse.build.tools/schema/atom10_build.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:atom="http://www.w3.org/2005/Atom" xmlns:bf="http://www.eclipse.org/2006/BuildFeed" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2005/Atom">
-  <xsd:import namespace="http://www.eclipse.org/2006/BuildFeed" schemaLocation="build.xsd"/> 
-  <xsd:element name="feed">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element ref="atom:title"/>
-        <xsd:element ref="atom:link"/>
-        <xsd:element ref="atom:updated"/>
-        <xsd:element ref="atom:author"/>
-        <xsd:element ref="atom:id"/>
-        <xsd:element maxOccurs="unbounded" ref="atom:entry"/>
-      </xsd:sequence>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="author">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element ref="atom:name"/>
-      </xsd:sequence>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="name" type="xsd:string"/>
-  <xsd:element name="entry">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element ref="atom:title"/>
-        <xsd:element ref="atom:link"/>
-        <xsd:element ref="atom:id"/>
-        <xsd:element ref="atom:updated"/>
-        <xsd:element ref="atom:summary"/>
-      </xsd:sequence>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="summary">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element maxOccurs="1" minOccurs="1" ref="bf:build"/>
-      </xsd:sequence>
-    </xsd:complexType>
-  </xsd:element>
-
-  <xsd:element name="title" type="xsd:string"/>
-  <xsd:element name="link">
-    <xsd:complexType>
-      <xsd:attribute name="href" type="xsd:anyURI" use="required"/>
-      <xsd:attribute name="rel" type="xsd:NCName"/>
-      <xsd:attribute name="type"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="updated" type="xsd:dateTime"/>
-  <xsd:element name="id" type="xsd:anyURI"/>
-</xsd:schema>
diff --git a/bundles/org.eclipse.build.tools/schema/build.xsd b/bundles/org.eclipse.build.tools/schema/build.xsd
deleted file mode 100644
index fc5e9d3..0000000
--- a/bundles/org.eclipse.build.tools/schema/build.xsd
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.eclipse.org/2006/BuildFeed" elementFormDefault="qualified" targetNamespace="http://www.eclipse.org/2006/BuildFeed">
-
-  <xs:element name="build">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="1" minOccurs="0" ref="detail"/>
-        <xs:element maxOccurs="1" minOccurs="0" ref="update"/>
-        <xs:element maxOccurs="1" minOccurs="0" ref="downloads"/>
-        <xs:element maxOccurs="1" minOccurs="0" ref="releasenotes"/>
-        
-        <xs:element maxOccurs="1" minOccurs="0" ref="releases"/>
-        
-        <xs:element maxOccurs="1" minOccurs="0" ref="tests"/>
-        
-        <xs:element maxOccurs="1" minOccurs="0" ref="dependencies"/>
-        <xs:element maxOccurs="1" minOccurs="0" ref="coordinated"/>
-      </xs:sequence>
-      <xs:attribute name="version" type="buildVersion" use="required"/>
-      <xs:attribute name="type" type="enumBuildType" use="required"/>
-      <xs:attribute name="datetime" type="buildDatetime" use="required"/>
-      <xs:attribute name="href" type="xs:anyURI" use="required"/>
-      <xs:attribute name="branch" type="xs:token" use="optional"/>
-      <xs:attribute name="jars" type="enumJarSigningStatus" use="optional"/>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="detail">
-    <xs:complexType>
-      <xs:attribute name="href" type="xs:anyURI" use="required"/>
-      <xs:attribute name="config" type="xs:token" use="optional"/>
-      <xs:attribute name="log" type="xs:token" use="optional"/>
-      <xs:attribute name="map" type="xs:token" use="optional"/>
-	</xs:complexType>
-  </xs:element>
-
-  <xs:element name="update" type="xs:anyURI"/>
-  <xs:element name="downloads" type="xs:anyURI"/>
-  <xs:element name="releasenotes" type="xs:anyURI"/>
-
-  <xs:element name="releases">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="unbounded" minOccurs="1" ref="release"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="release">
-    <xs:complexType>
-      <xs:simpleContent>
-        <xs:extension base="xs:anyURI">
-          <xs:attribute name="os" type="enumOS" use="required"/>
-          <xs:attribute name="ws" type="enumWS" use="required"/>
-          <xs:attribute name="arch" type="enumArch" use="optional"/>
-          <xs:attribute name="type" type="enumReleaseType" use="required"/>
-        </xs:extension>
-      </xs:simpleContent>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="tests">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="unbounded" minOccurs="1" ref="test"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="test">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="unbounded" minOccurs="1" ref="result"/>
-      </xs:sequence>
-      <xs:attribute name="href" type="xs:anyURI" use="optional"/>
-      <xs:attribute name="type" type="enumTestType" use="required"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="result">
-    <xs:complexType>
-      <xs:simpleContent>
-        <xs:extension base="enumTestStatus">
-          <xs:attribute name="id" type="xs:token" use="optional"/>
-          <xs:attribute name="os" type="enumOS" use="required"/>
-          <xs:attribute name="ws" type="enumWS" use="required"/>
-          <xs:attribute name="arch" type="enumArch" use="optional"/>
-        </xs:extension>
-      </xs:simpleContent>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="dependencies">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="unbounded" minOccurs="1" ref="dependency"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="dependency" type="xs:anyURI"/>
-
-  <xs:element name="coordinated">
-    <xs:complexType>
-      <xs:simpleContent>
-        <xs:extension base="xs:string">
-        <xs:attribute name="status" type="enumCoordinatedStatus" use="optional"/>      
-      </xs:extension>
-    </xs:simpleContent>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:simpleType name="enumBuildType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="N"/>
-      <xs:enumeration value="I"/>
-      <xs:enumeration value="M"/>
-      <xs:enumeration value="S"/>
-      <xs:enumeration value="R"/>
-    </xs:restriction>
-  </xs:simpleType> 
-  
-  <xs:simpleType name="enumTestType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="junit"/>
-      <xs:enumeration value="performance"/>
-      <xs:enumeration value="api"/>
-    </xs:restriction>
-  </xs:simpleType> 
-  
-  <xs:simpleType name="enumJarSigningStatus">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value=""/>
-      <xs:enumeration value="NONE"/>
-      <xs:enumeration value="UNSIGNED"/>
-      <xs:enumeration value="SIGNREADY"/>
-      <xs:enumeration value="BUILDREADY"/>
-      <xs:enumeration value="SIGNED"/>
-    </xs:restriction>
-  </xs:simpleType> 
-  
-  <xs:simpleType name="enumCoordinatedStatus">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value=""/>
-      <xs:enumeration value="NONE"/>
-      <xs:enumeration value="BUILDCOMPLETE"/>
-      <xs:enumeration value="UMSITEREADY"/>
-      <xs:enumeration value="CALLISTOSITEREADY"/>
-      <xs:enumeration value="COMPLETE"/>
-    </xs:restriction>
-  </xs:simpleType> 
-  
-  <xs:simpleType name="enumTestStatus">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value=""/>
-      <xs:enumeration value="PASS"/>
-      <xs:enumeration value="PENDING"/>
-      <xs:enumeration value="FAIL"/>
-      <xs:enumeration value="AVAILABLE"/>
-      <xs:enumeration value="SKIPPED"/>
-      <xs:enumeration value="UNKNOWN"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="enumOS">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="aix"/>
-      <xs:enumeration value="hp-ux"/>
-      <xs:enumeration value="linux"/>
-      <xs:enumeration value="macosx"/>
-      <xs:enumeration value="qnx"/>
-      <xs:enumeration value="solaris8"/>
-      <xs:enumeration value="wce"/>
-      <xs:enumeration value="win32"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="OTHER"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="enumWS">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="carbon"/>
-      <xs:enumeration value="gtk"/>
-      <xs:enumeration value="motif"/>
-      <xs:enumeration value="photon"/>
-      <xs:enumeration value="win"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="OTHER"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="enumArch">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="arm"/>
-      <xs:enumeration value="hp9000"/>
-      <xs:enumeration value="ppc"/>
-      <xs:enumeration value="sparc"/>
-      <xs:enumeration value="x86"/>
-      <xs:enumeration value="x86_64"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="OTHER"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="enumReleaseType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="SDK"/>
-      <xs:enumeration value="runtime"/>
-      <xs:enumeration value="tests"/>
-      <xs:enumeration value="examples"/>
-      <xs:enumeration value="OTHER"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="buildDatetime">
-    <xs:restriction base="xs:token">
-      <xs:pattern value="\d{8}-{0,1}\d{0,4}"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="buildVersion">
-    <xs:restriction base="xs:token">
-      <xs:pattern value="\d{1,2}.\d{1,2}.\d{1,2}"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-</xs:schema>
diff --git a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CompileErrorCheck.java b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CompileErrorCheck.java
index 187f3c5..daf3dab 100644
--- a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CompileErrorCheck.java
+++ b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CompileErrorCheck.java
@@ -21,7 +21,6 @@
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
-import java.util.Enumeration;
 import java.util.Vector;
 
 import javax.xml.parsers.ParserConfigurationException;
@@ -80,7 +79,7 @@
 	public void execute() throws BuildException {
 		if (parser == null) return;
 		findLogs(new File(install));
-		sendNotice();
+		//sendNotice();
 	}
 
 	// test
@@ -186,39 +185,39 @@
 		}
 	}
 	
-	private void sendNotice() {
-		//send email notification that there are compile errors in the build
-		//send the logs as attachments
-		Enumeration enumeration = logsWithErrors.elements();
-
-		if (logsWithErrors.size() > 0) {
-			try{
-
-				Mailer mailer = new Mailer();
-				String [] logFiles = new String [logsWithErrors.size()];
-
-				int i=0;
-
-				while (enumeration.hasMoreElements()) {
-					logFiles[i++]=((File) enumeration.nextElement()).getAbsolutePath();
-				}
-
-				mailer.sendMultiPartMessage("Compile errors in build", "Compile errors in build.  See attached compile logs.", logFiles);
-			} catch (NoClassDefFoundError e){
-				while (enumeration.hasMoreElements()) {
-					String path=((File) enumeration.nextElement()).getAbsolutePath();
-					String nameWithPlugin=path.substring(path.indexOf("plugins"),path.length());
-					System.out.println("Compile errors detected in "+nameWithPlugin);
-				}
-
-				System.out.println("Unable to send email notice of compile errors.");
-				System.out.println("The j2ee.jar may not be on the Ant classpath.");
-
-			}
-
-		}
-
-	}
+//	private void sendNotice() {
+//		//send email notification that there are compile errors in the build
+//		//send the logs as attachments
+//		Enumeration enumeration = logsWithErrors.elements();
+//
+//		if (logsWithErrors.size() > 0) {
+//			try{
+//
+//				Mailer mailer = new Mailer();
+//				String [] logFiles = new String [logsWithErrors.size()];
+//
+//				int i=0;
+//
+//				while (enumeration.hasMoreElements()) {
+//					logFiles[i++]=((File) enumeration.nextElement()).getAbsolutePath();
+//				}
+//
+//				mailer.sendMultiPartMessage("Compile errors in build", "Compile errors in build.  See attached compile logs.", logFiles);
+//			} catch (NoClassDefFoundError e){
+//				while (enumeration.hasMoreElements()) {
+//					String path=((File) enumeration.nextElement()).getAbsolutePath();
+//					String nameWithPlugin=path.substring(path.indexOf("plugins"),path.length());
+//					System.out.println("Compile errors detected in "+nameWithPlugin);
+//				}
+//
+//				System.out.println("Unable to send email notice of compile errors.");
+//				System.out.println("The j2ee.jar may not be on the Ant classpath.");
+//
+//			}
+//
+//		}
+//
+//	}
 
 	/**
 	 * Gets the install.
diff --git a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CvsDiffParser.java b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CvsDiffParser.java
index 9fdc204..d26f0d9 100644
--- a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CvsDiffParser.java
+++ b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/CvsDiffParser.java
@@ -52,7 +52,7 @@
 
 	public void execute() throws BuildException {
 		parseMapDiffFile();
-		sendNotice();
+		//sendNotice();
 	}
 
 	/**
@@ -109,25 +109,25 @@
 		}
 	}
 
-	private void sendNotice(){
-		
-		if (updatedMaps==null || updatedMaps.size()==0){
-			throw new BuildException("Build cancelled - map files unchanged.");
-		} 
-		
-		Mailer mailer = new Mailer();
-		
-		String subject="updated map file listing";
-		String message ="these map files have been updated for the build:\n\n";
-		
-		for (int i=0; i<updatedMaps.size();i++){
-			message=message.concat(updatedMaps.elementAt(i).toString()+"\n");
-		}
-		
-		try {
-			mailer.sendMessage(subject,message);
-		} catch (NoClassDefFoundError e){
-			System.out.println(message);
-		}		
-	}
+//	private void sendNotice(){
+//		
+//		if (updatedMaps==null || updatedMaps.size()==0){
+//			throw new BuildException("Build cancelled - map files unchanged.");
+//		} 
+//		
+//		Mailer mailer = new Mailer();
+//		
+//		String subject="updated map file listing";
+//		String message ="these map files have been updated for the build:\n\n";
+//		
+//		for (int i=0; i<updatedMaps.size();i++){
+//			message=message.concat(updatedMaps.elementAt(i).toString()+"\n");
+//		}
+//		
+//		try {
+//			mailer.sendMessage(subject,message);
+//		} catch (NoClassDefFoundError e){
+//			System.out.println(message);
+//		}		
+//	}
 }
diff --git a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java
deleted file mode 100644
index ab83b38..0000000
--- a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.releng;
-
-/**
- * A Class that sends build related email messages.  host, sender, recipient and
- * build related information set in monitor.properties
- */
-
-import javax.activation.DataHandler;
-import javax.activation.FileDataSource;
-import javax.mail.*;
-import javax.mail.internet.*;
-
-import java.io.File;
-import java.util.StringTokenizer;
-import java.util.Properties;
-
-public class Mailer {
-
-	// flag that determines whether or not to send mail
-	boolean sendMail = true;
-
-	// the Object that holds the key value pairs in monitor.properties
-	private BuildProperties buildProperties;
-
-	//convert the comma separated list of email addressed into an array of Address objects
-	private Address[] getAddresses(String recipientList) {
-		int i = 0;
-		StringTokenizer recipients = new StringTokenizer(recipientList, ",");
-		Address[] addresses = new Address[recipients.countTokens()];
-
-		while (recipients.hasMoreTokens()) {
-			try {
-				addresses[i++] = new InternetAddress(recipients.nextToken());
-			} catch (AddressException e) {
-				System.out.println("Unable to create address");
-			}
-		}
-		return addresses;
-	}
-
-	public Mailer(){
-		this("monitor.properties");
-	}
-	public Mailer(String buildPropertiesPath){
-		buildProperties = new BuildProperties(buildPropertiesPath);
-		if (buildProperties.getHost().equals("")||buildProperties.getSender().equals("")||buildProperties.getToRecipientList().equals("")){
-			sendMail=false;
-		}
-	}
-
-
-	public static void main(String args[]) {
-		Mailer mailer=new Mailer(args[0]);
-		mailer.sendTextMessage(args[1],args[2]);
-	}
-	
-	public void sendMessage(String aSubject, String aMessage) {
-		if (aSubject == null || aMessage == null || sendMail == false){
-			printEmailFailureNotice(aSubject,aMessage);
-		}
-
-		// Get system properties
-		Properties props = System.getProperties();
-
-		// Setup mail server
-		props.put("mail.smtp.host", buildProperties.getHost());
-
-		// Get session
-		Session session = Session.getDefaultInstance(props, null);
-
-		// Define message
-		MimeMessage message = new MimeMessage(session);
-
-		try {
-			
-			// Set the from address
-			message.setFrom(new InternetAddress(buildProperties.getSender()));
-
-			// Set the to address
-			message.addRecipients(Message.RecipientType.TO, getAddresses(buildProperties.getToRecipientList()));
-
-			// Set the subject
-			message.setSubject(buildProperties.getBuildSubjectPrefix()+
-						"Build "
-							+ buildProperties.getBuildid()
-							+ " (Timestamp:  "
-							+ buildProperties.getTimestamp()
-							+ "):"
-							+ aSubject);
-
-			// Set the content
-			message.setText(
-				"Build "
-					+ buildProperties.getBuildid()
-					+ " (Timestamp: "
-					+ buildProperties.getTimestamp()
-					+ "):  "
-					+ aMessage);
-
-			// Send message
-			Transport.send(message);
-
-		} catch (AddressException e) {
-			e.printStackTrace();
-		} catch (MessagingException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void sendTextMessage(String aSubject, String aMessage) {
-		if (aSubject == null || aMessage == null || sendMail == false){
-			printEmailFailureNotice(aSubject,aMessage);
-		}
-
-		// Get system properties
-		Properties props = System.getProperties();
-
-		// Setup mail server
-		props.put("mail.smtp.host", buildProperties.getHost());
-
-		// Get session
-		Session session = Session.getDefaultInstance(props, null);
-
-		// Define message
-		MimeMessage message = new MimeMessage(session);
-
-		try {
-			
-			// Set the from address
-			message.setFrom(new InternetAddress(buildProperties.getSender()));
-
-			// Set the to address
-			message.addRecipients(Message.RecipientType.BCC, getAddresses(buildProperties.getTextRecipientList()));
-
-			// Set the subject
-			message.setSubject(buildProperties.getBuildSubjectPrefix()+
-						"Build "
-							+ buildProperties.getBuildid()
-							+ ":"
-							+ aSubject);
-
-			// Set the content
-			message.setText(aMessage);
-
-			// Send message
-			Transport.send(message);
-
-		} catch (AddressException e) {
-			e.printStackTrace();
-		} catch (MessagingException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void sendMultiPartMessage(
-	// a method for sending mail with attachments
-	String aSubject, String aMessage, String[] attachments) {
-		if (aSubject == null || aMessage == null || sendMail == false){
-			printEmailFailureNotice(aSubject,aMessage);
-		}
-
-		// Get system properties
-		Properties props = System.getProperties();
-
-		// Setup mail server
-		props.put("mail.smtp.host", buildProperties.getHost());
-
-		// Get session
-		Session session = Session.getDefaultInstance(props, null);
-
-		// Define message
-		MimeMessage message = new MimeMessage(session);
-
-		Multipart mp = new MimeMultipart();
-
-		try {
-			// Set the from address
-			message.setFrom(new InternetAddress(buildProperties.getSender()));
-
-			// Set the to address
-			message.addRecipients(Message.RecipientType.TO, getAddresses(buildProperties.getToRecipientList()));
-
-			// Set the subject
-			message.setSubject(buildProperties.getBuildSubjectPrefix()+
-			"Build "
-				+ buildProperties.getBuildid()
-				+ " (Timestamp:  "
-				+ buildProperties.getTimestamp()
-				+ "):"
-				+ aSubject);
-
-			// create and fill the first message part 
-			MimeBodyPart part = new MimeBodyPart();
-			part.setText(
-				"Build "
-					+ buildProperties.getBuildid()
-					+ " (Timestamp: "
-					+ buildProperties.getTimestamp()
-					+ "):  "
-					+ aMessage);
-			mp.addBodyPart(part);
-
-			//for each attachment create new message part
-			for (int i = 0; i < attachments.length; i++) {
-				MimeBodyPart attachmentPart = new MimeBodyPart();
-				// attach the file to the message 
-				FileDataSource attachment = new FileDataSource(attachments[i]);
-				attachmentPart.setDataHandler(new DataHandler(attachment));
-				File attachmentFile=new File(attachments[i]);							
-				attachmentPart.setFileName(attachmentFile.getParent()+"-"+attachmentFile.getName());
-				mp.addBodyPart(attachmentPart);
-			}
-
-			// add the Multipart to the message 
-			message.setContent(mp);
-
-			Transport.send(message);
-
-		} catch (AddressException e) {
-		} catch (MessagingException e) {
-		}
-	}
-
-	private void printEmailFailureNotice(String aSubject, String aMessage){
-		System.out.println("Email failed.  Settings:");
-		System.out.println("\nhost="+buildProperties.getHost()+"\nsender="+buildProperties.getSender()+"\nrecipients="+buildProperties.getToRecipientList());
-		System.out.println("\nSubject="+aSubject+"\nMessage="+aMessage);
-		return;
-	}
-
-	/**
-	 * Returns the buildProperties.
-	 * @return BuildProperties
-	 */
-	public BuildProperties getBuildProperties() {
-		return buildProperties;
-	}
-
-	/**
-	 * Sets the buildProperties.
-	 * @param buildProperties The buildProperties to set
-	 */
-	public void setBuildProperties(BuildProperties buildProperties) {
-		this.buildProperties = buildProperties;
-	}
-
-}
diff --git a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/EclipseTestResultsGeneratorNoMail.java b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/EclipseTestResultsGeneratorNoMail.java
index 98be942..2347cef 100644
--- a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/EclipseTestResultsGeneratorNoMail.java
+++ b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/EclipseTestResultsGeneratorNoMail.java
@@ -5,7 +5,6 @@
  * Window>Preferences>Java>Code Generation>Code and Comments
  */
 package org.eclipse.releng.generators;
-import java.io.File;
 
 
 
diff --git a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/FileCounter.java b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/FileCounter.java
index 9490c66..ed46201 100644
--- a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/FileCounter.java
+++ b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/FileCounter.java
@@ -53,10 +53,6 @@
 		System.out.println("Filter String: " + this.getFilterString());
 		
 		File aDirectory = new File(this.getSourceDirectory());
-		if (aDirectory == null) {
-			throw new BuildException("Directory " + this.getSourceDirectory() + " not found.");
-		}
-		
 		String[] names = aDirectory.list();
 		if (names == null) {
 			throw new BuildException("Directory " + this.getSourceDirectory() + " not found.");
diff --git a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/TestVersionTracker.java b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/TestVersionTracker.java
index 7ed4ac3..006d4fb 100644
--- a/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/TestVersionTracker.java
+++ b/bundles/org.eclipse.build.tools/src/org/eclipse/releng/generators/TestVersionTracker.java
@@ -245,15 +245,11 @@
 				NamedNodeMap map = node.getAttributes();
 				Node namedItem = map.getNamedItem("plugin");
 				String name = namedItem.getNodeValue();
-				if (namedItem == null) {
-					continue;
-				} else {
-					if (elements.containsKey(name)) {
-						if (!prerequisitePlugins.contains(name)) {
-							boolean prereqAdded = prerequisitePlugins.add(name);
-							if (prereqAdded) {
-								getPrerequisitePlugins(name);
-							}
+				if (elements.containsKey(name)) {
+					if (!prerequisitePlugins.contains(name)) {
+						boolean prereqAdded = prerequisitePlugins.add(name);
+						if (prereqAdded) {
+							getPrerequisitePlugins(name);
 						}
 					}
 				}
@@ -310,13 +306,9 @@
 				NamedNodeMap map = node.getAttributes();
 				Node namedItem = map.getNamedItem("name");
 				String name = namedItem.getNodeValue();
-				if (namedItem == null) {
-					continue;
-				} else {
-					if (name.equals("performance")){
-						hasPerformanceTarget=true;
-						return;
-					}
+				if (name.equals("performance")){
+					hasPerformanceTarget=true;
+					return;
 				}
 			}
 		}
diff --git a/bundles/org.eclipse.releng.build.tools.convert/.classpath b/bundles/org.eclipse.releng.build.tools.convert/.classpath
new file mode 100644
index 0000000..472ee29
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.releng.build.tools.convert/.gitignore b/bundles/org.eclipse.releng.build.tools.convert/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/bundles/org.eclipse.releng.build.tools.convert/.project b/bundles/org.eclipse.releng.build.tools.convert/.project
new file mode 100644
index 0000000..ad59a92
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.releng.build.tools.convert</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..d66b8b9
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,99 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/bundles/org.eclipse.releng.build.tools.convert/META-INF/MANIFEST.MF b/bundles/org.eclipse.releng.build.tools.convert/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f7fd639
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.releng.build.tools.convert;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-ClassPath: convert.jar
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.apache.ant,
+ org.eclipse.equinox.app
+Export-Package: org.eclipse.releng.build.tools.convert.ant,
+ org.eclipse.releng.build.tools.convert.application,
+ org.eclipse.releng.build.tools.convert.dom
diff --git a/bundles/org.eclipse.releng.build.tools.convert/about.html b/bundles/org.eclipse.releng.build.tools.convert/about.html
new file mode 100644
index 0000000..96494d2
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

+<title>About</title>

+</head>

+<body lang="EN-US">

+<h2>About This Content</h2>

+ 

+<p>May 11, 2006</p>	

+<h3>License</h3>

+

+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 

+indicated below, the Content is provided to you under the terms and conditions of the

+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 

+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.

+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>

+

+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 

+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may

+apply to your use of any object code in the Content.  Check the Redistributor's license that was 

+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise

+indicated below, the terms and conditions of the EPL still apply to any source code in the Content

+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>

+

+</body>

+</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.releng.build.tools.convert/build.properties b/bundles/org.eclipse.releng.build.tools.convert/build.properties
new file mode 100644
index 0000000..6e916cf
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/build.properties
@@ -0,0 +1,7 @@
+bin.includes = META-INF/,\
+               about.html,\
+               src/,\
+               plugin.properties,\
+               plugin.xml,\
+               convert.jar
+source.convert.jar = src/
diff --git a/bundles/org.eclipse.releng.build.tools.convert/plugin.properties b/bundles/org.eclipse.releng.build.tools.convert/plugin.properties
new file mode 100644
index 0000000..50cf2a7
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/plugin.properties
@@ -0,0 +1,2 @@
+Bundle-Vendor = Eclipse Platform Releng

+Bundle-Name = Convert Build Tool
\ No newline at end of file
diff --git a/bundles/org.eclipse.releng.build.tools.convert/plugin.xml b/bundles/org.eclipse.releng.build.tools.convert/plugin.xml
new file mode 100644
index 0000000..331ede4
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+    <extension point="org.eclipse.ant.core.extraClasspathEntries">
+        <extraClasspathEntry library="convert.jar">
+        </extraClasspathEntry>
+    </extension>
+
+    <extension point="org.eclipse.ant.core.antTasks">
+        <antTask
+            name="eclipse.convert"
+            class="org.eclipse.releng.build.tools.convert.ant.LogConverterTask"
+            library="convert.jar">
+        </antTask>
+    </extension>
+    <extension
+        id="logConverter"
+        point="org.eclipse.core.runtime.applications">
+        <application>
+            <run class="org.eclipse.releng.build.tools.convert.application.LogConverter" />
+        </application>
+    </extension>
+
+</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/Converter.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/Converter.java
new file mode 100644
index 0000000..cdb0418
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/Converter.java
@@ -0,0 +1,360 @@
+/*******************************************************************************

+ * Copyright (c) 2000, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.ant;

+

+import java.io.File;

+import java.io.FileFilter;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.HashMap;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.ParserConfigurationException;

+

+import org.eclipse.releng.build.tools.convert.dom.AbstractDOMConverter;

+import org.eclipse.releng.build.tools.convert.dom.IDOMConverter;

+import org.eclipse.releng.build.tools.convert.dom.LogDocumentNode;

+import org.eclipse.releng.build.tools.convert.dom.ProblemNode;

+import org.eclipse.releng.build.tools.convert.dom.ProblemSummaryNode;

+import org.eclipse.releng.build.tools.convert.dom.ProblemsNode;

+import org.w3c.dom.Document;

+import org.w3c.dom.NamedNodeMap;

+import org.w3c.dom.Node;

+import org.w3c.dom.NodeList;

+import org.xml.sax.InputSource;

+import org.xml.sax.SAXException;

+import org.xml.sax.SAXParseException;

+import org.xml.sax.helpers.DefaultHandler;

+

+public class Converter {

+	private static final String HTML_EXTENSION = ".html"; //$NON-NLS-1$

+

+	private static final String TXT_EXTENSION = ".txt"; //$NON-NLS-1$

+

+	private static final String XML_EXTENSION = ".xml"; //$NON-NLS-1$

+

+	public static final String INPUT_SOURCE = "inputSource";//$NON-NLS-1$

+

+	public static final String CONVERTER_ID = "converterID";//$NON-NLS-1$

+

+	public static final String OUTPUT_FILE_NAME = "outputFileName";//$NON-NLS-1$

+

+	public static final String ENABLE_VALIDATION = "enableValidation";//$NON-NLS-1$

+

+	public static final String RECURSIVE = "recurse";//$NON-NLS-1$

+

+	public static final int FORMAT_VERSION_2 = 2;

+

+	public static final int CURRENT_FORMAT_VERSION = FORMAT_VERSION_2;

+

+	private static final FileFilter XML_FILTER = new FileFilter() {

+		/*

+		 * (non-Javadoc)

+		 *

+		 * @see java.io.FileFilter#accept(java.io.File)

+		 */

+		public boolean accept(File pathname) {

+			String path = pathname.getAbsolutePath().toLowerCase();

+			return path.endsWith(XML_EXTENSION) || pathname.isDirectory();

+		}

+	};

+

+	private HashMap options;

+

+	public static File[] getAllFiles(File root, FileFilter fileFilter) {

+		ArrayList files = new ArrayList();

+		if (root.isDirectory()) {

+			collectAllFiles(root, files, fileFilter);

+			File[] result = new File[files.size()];

+			files.toArray(result);

+			return result;

+		}

+		return null;

+	}

+

+	private static void collectAllFiles(File root, ArrayList collector, FileFilter fileFilter) {

+		File[] files = root.listFiles(fileFilter);

+		for (int i = 0; i < files.length; i++) {

+			final File currentFile = files[i];

+			if (currentFile.isDirectory()) {

+				collectAllFiles(currentFile, collector, fileFilter);

+			} else {

+				collector.add(currentFile);

+			}

+		}

+	}

+

+	public Converter() {

+		this.options = new HashMap();

+	}

+

+	public void configure(String[] args) {

+		if (args == null || args.length == 0) {

+			throw new IllegalArgumentException("Arguments cannot be empty");//$NON-NLS-1$

+		}

+

+		// set default options

+		this.options.put(ENABLE_VALIDATION, "false"); //$NON-NLS-1$

+		int converterID = ConverterFactory.HTML;

+

+		int argCount = args.length;

+		int index = 0;

+		boolean setOutputFile = false;

+		boolean setValidation = false;

+		boolean setInputFile = false;

+

+		final int DEFAULT_MODE = 0;

+		final int OUTPUT_FILE_MODE = 1;

+		final int INPUT_FILE_MODE = 2;

+

+		int mode = DEFAULT_MODE;

+

+		loop: while (index < argCount) {

+			String currentArg = args[index++];

+

+			switch (mode) {

+				case INPUT_FILE_MODE:

+					this.options.put(INPUT_SOURCE, currentArg);

+					mode = DEFAULT_MODE;

+					break;

+				case OUTPUT_FILE_MODE:

+					if (currentArg.toLowerCase().endsWith(TXT_EXTENSION)) {

+						converterID = ConverterFactory.TXT;

+					}

+					this.options.put(OUTPUT_FILE_NAME, currentArg);

+					mode = DEFAULT_MODE;

+					continue loop;

+				case DEFAULT_MODE:

+					if (currentArg.equals("-v")) { //$NON-NLS-1$

+						if (setValidation) {

+							throw new IllegalArgumentException("Duplicate validation flag"); //$NON-NLS-1$

+						}

+						setValidation = true;

+						this.options.put(ENABLE_VALIDATION, "true"); //$NON-NLS-1$

+						mode = DEFAULT_MODE;

+						continue loop;

+					}

+					if (currentArg.equals("-o")) { //$NON-NLS-1$

+						if (setOutputFile) {

+							throw new IllegalArgumentException("Duplicate output file"); //$NON-NLS-1$

+						}

+						setOutputFile = true;

+						mode = OUTPUT_FILE_MODE;

+						continue loop;

+					}

+					if (currentArg.equals("-i")) { //$NON-NLS-1$

+						if (setInputFile) {

+							throw new IllegalArgumentException("Duplicate input file"); //$NON-NLS-1$

+						}

+						setInputFile = true;

+						mode = INPUT_FILE_MODE;

+						continue loop;

+					}

+					if (currentArg.equals("-r")) { //$NON-NLS-1$

+						this.options.put(RECURSIVE, "true"); //$NON-NLS-1$

+						mode = DEFAULT_MODE;

+						continue loop;

+					}

+			}

+		}

+		final String input = (String) this.options.get(INPUT_SOURCE);

+		if (input == null) {

+			throw new IllegalArgumentException("An input file or directorty is required"); //$NON-NLS-1$

+		}

+		if (this.options.get(RECURSIVE) == null) {

+			if (!input.toLowerCase().endsWith(".xml")) { //$NON-NLS-1$

+				throw new IllegalArgumentException("Input file must be an xml file"); //$NON-NLS-1$

+			}

+		}

+		this.options.put(CONVERTER_ID, String.valueOf(converterID));

+	}

+

+	public void parse2() throws ParserConfigurationException {

+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

+		boolean validation = Boolean.valueOf((String) this.options.get(ENABLE_VALIDATION)).booleanValue();

+		factory.setValidating(validation);

+		factory.setIgnoringElementContentWhitespace(true);

+		DocumentBuilder builder = factory.newDocumentBuilder();

+

+		final String inputSourceOption = (String) this.options.get(INPUT_SOURCE);

+		if (this.options.get(RECURSIVE) != null) {

+			// collect all xml files and iterate over them

+			File sourceDir = new File(inputSourceOption);

+			if (!sourceDir.exists()) {

+				throw new IllegalArgumentException("Directory " + inputSourceOption + " doesn't exist");//$NON-NLS-1$//$NON-NLS-2$

+			}

+			if (!sourceDir.isDirectory()) {

+				throw new IllegalArgumentException(inputSourceOption + " must be a directory in recursive mode");//$NON-NLS-1$

+			}

+			File[] xmlFiles = getAllFiles(sourceDir, XML_FILTER);

+			for (int i = 0, max = xmlFiles.length; i < max; i++) {

+				final String inputFileName = xmlFiles[i].getAbsolutePath();

+				InputSource inputSource = new InputSource(inputFileName);

+				final String outputFileName = extractNameFrom(inputFileName);

+				this.options.put(INPUT_SOURCE, inputFileName);

+				this.options.put(OUTPUT_FILE_NAME, outputFileName);

+				try {

+					builder.setErrorHandler(new DefaultHandler() {

+						public void error(SAXParseException e) throws SAXException {

+							reportError(inputFileName, e);

+							throw e;

+						}

+					});

+					Document document = builder.parse(inputSource);

+					LogDocumentNode documentNode = process(document);

+					dump(documentNode);

+				} catch (SAXException e) {

+					System.out.println(e);

+				} catch (IOException e) {

+					// ignore

+				}

+			}

+		} else {

+			// Parse

+			if (inputSourceOption != null) {

+				InputSource inputSource = new InputSource(inputSourceOption);

+				if (this.options.get(OUTPUT_FILE_NAME) == null) {

+					this.options.put(OUTPUT_FILE_NAME, extractNameFrom(inputSourceOption));

+				}

+				try {

+					builder.setErrorHandler(new DefaultHandler() {

+						public void error(SAXParseException e) throws SAXException {

+							reportError(inputSourceOption, e);

+							throw e;

+						}

+					});

+					Document document = builder.parse(inputSource);

+					LogDocumentNode documentNode = process(document);

+					dump(documentNode);

+				} catch (SAXException e) {

+					// ignore

+				} catch (IOException e) {

+					// ignore

+				}

+			}

+		}

+	}

+	private void dump(LogDocumentNode documentNode) {

+		IDOMConverter converter = ConverterFactory.createDOMConverter(Integer.parseInt((String) this.options.get(Converter.CONVERTER_ID)));

+		converter.dump(CURRENT_FORMAT_VERSION, this.options, documentNode);

+	}

+

+	private LogDocumentNode process(Document document) {

+		LogDocumentNode documentNode = new LogDocumentNode();

+		NodeList nodeList=document.getElementsByTagName("problem_summary"); //$NON-NLS-1$

+		if (nodeList.getLength() == 1) {

+			Node problemSummaryNode = nodeList.item(0);

+			NamedNodeMap problemSummaryMap = problemSummaryNode.getAttributes();

+			ProblemSummaryNode summaryNode = new ProblemSummaryNode();

+			documentNode.setProblemSummary(summaryNode);

+			summaryNode.numberOfProblems = Integer.parseInt(problemSummaryMap.getNamedItem("problems").getNodeValue()); //$NON-NLS-1$

+			summaryNode.numberOfErrors = Integer.parseInt(problemSummaryMap.getNamedItem("errors").getNodeValue()); //$NON-NLS-1$

+			summaryNode.numberOfWarnings = Integer.parseInt(problemSummaryMap.getNamedItem("warnings").getNodeValue()); //$NON-NLS-1$

+		}

+

+		nodeList=document.getElementsByTagName("problems"); //$NON-NLS-1$

+		if (nodeList == null) return null;

+

+		final int length = nodeList.getLength();

+		int globalErrorNumber = 1;

+		for (int i = 0; i < length; i++) {

+			Node problemsNode = nodeList.item(i);

+			ProblemsNode node = new ProblemsNode();

+			documentNode.addProblemsNode(node);

+			Node sourceNode = problemsNode.getParentNode();

+			NamedNodeMap sourceNodeMap = sourceNode.getAttributes();

+			final String sourceFileName = sourceNodeMap.getNamedItem("path").getNodeValue();//$NON-NLS-1$

+			node.sourceFileName = sourceFileName;

+			NamedNodeMap problemsNodeMap = problemsNode.getAttributes();

+			node.numberOfErrors = Integer.parseInt(problemsNodeMap.getNamedItem("errors").getNodeValue());//$NON-NLS-1$

+			node.numberOfWarnings = Integer.parseInt(problemsNodeMap.getNamedItem("warnings").getNodeValue());//$NON-NLS-1$

+			node.numberOfProblems = Integer.parseInt(problemsNodeMap.getNamedItem("problems").getNodeValue());//$NON-NLS-1$

+

+			NodeList children = problemsNode.getChildNodes();

+			int childrenLength = children.getLength();

+			for (int j = 0; j < childrenLength; j++) {

+				Node problemNode = children.item(j);

+				NamedNodeMap problemNodeMap = problemNode.getAttributes();

+				String severity = problemNodeMap.getNamedItem("severity").getNodeValue();//$NON-NLS-1$

+				ProblemNode problem = new ProblemNode();

+				final boolean isError = "ERROR".equals(severity);//$NON-NLS-1$

+				problem.isError = isError;

+				problem.id = problemNodeMap.getNamedItem("id").getNodeValue();//$NON-NLS-1$

+				if (isError) {

+					node.addError(problem);

+				} else if (AbstractDOMConverter.FILTERED_WARNINGS_IDS.contains(problem.id)) {

+					if (AbstractDOMConverter.FORBIDDEN_REFERENCE.equals(problem.id)) {

+						node.addForbiddenWarning(problem);

+					} else {

+						node.addDiscouragedWarning(problem);

+					}

+				} else {

+					node.addOtherWarning(problem);

+				}

+				problem.charStart = Integer.parseInt(problemNodeMap.getNamedItem("charStart").getNodeValue());//$NON-NLS-1$

+				problem.charEnd = Integer.parseInt(problemNodeMap.getNamedItem("charEnd").getNodeValue());//$NON-NLS-1$

+				problem.line = Integer.parseInt(problemNodeMap.getNamedItem("line").getNodeValue());//$NON-NLS-1$

+				problem.globalProblemNumber = globalErrorNumber;

+				problem.problemNumber = j;

+				problem.sourceFileName = sourceFileName;

+				globalErrorNumber++;

+				NodeList problemChildren = problemNode.getChildNodes();

+				int problemChildrenLength = problemChildren.getLength();

+				for (int n = 0; n < problemChildrenLength; n++) {

+					Node child = problemChildren.item(n);

+					final String nodeName = child.getNodeName();

+					if ("message".equals(nodeName)) {//$NON-NLS-1$

+						NamedNodeMap childNodeMap = child.getAttributes();

+						problem.message = childNodeMap.getNamedItem("value").getNodeValue();//$NON-NLS-1$

+					} else if ("source_context".equals(nodeName)) {//$NON-NLS-1$

+						NamedNodeMap childNodeMap = child.getAttributes();

+						problem.sourceStart = Integer.parseInt(childNodeMap.getNamedItem("sourceStart").getNodeValue());//$NON-NLS-1$

+						problem.sourceEnd = Integer.parseInt(childNodeMap.getNamedItem("sourceEnd").getNodeValue());//$NON-NLS-1$

+						problem.contextValue = childNodeMap.getNamedItem("value").getNodeValue();//$NON-NLS-1$

+					}

+				}

+			}

+		}

+		return documentNode;

+	}

+

+	private String extractNameFrom(String inputFileName) {

+		int index = inputFileName.lastIndexOf('.');

+		switch (Integer.parseInt((String) this.options.get(Converter.CONVERTER_ID))) {

+			case ConverterFactory.TXT:

+				return inputFileName.substring(0, index) + TXT_EXTENSION;

+			case ConverterFactory.HTML:

+				return inputFileName.substring(0, index) + HTML_EXTENSION;

+			default:

+				return inputFileName.substring(0, index) + HTML_EXTENSION;

+		}

+	}

+

+	void reportError(final String inputFileName, SAXParseException e) {

+		System.err.println("Error in " + inputFileName + " at line " + e.getLineNumber() + " and column " + e.getColumnNumber()); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$

+		System.err.println(e.getMessage());

+	}

+

+	public static void run(String[] args) throws ParserConfigurationException {

+		Converter converter = new Converter();

+		converter.configure(args);

+		converter.parse2();

+	}

+

+	public static void main(String[] args) {

+		try {

+			run(args);

+		} catch (ParserConfigurationException e) {

+			e.printStackTrace();

+		}

+	}

+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/ConverterFactory.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/ConverterFactory.java
new file mode 100644
index 0000000..610a7fa
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/ConverterFactory.java
@@ -0,0 +1,33 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.ant;

+

+import org.eclipse.releng.build.tools.convert.dom.DOMHtmlConverter;

+import org.eclipse.releng.build.tools.convert.dom.DOMTxtConverter;

+import org.eclipse.releng.build.tools.convert.dom.IDOMConverter;

+

+

+public class ConverterFactory {

+	public static final String EMPTY = ""; //$NON-NLS-1$

+	public static final int TXT = 0;

+	public static final int HTML = 1;

+

+	public static IDOMConverter createDOMConverter(int id) {

+		switch(id) {

+			case TXT :

+				return new DOMTxtConverter();

+			case HTML :

+				return new DOMHtmlConverter();

+			default:

+				return new DOMHtmlConverter();

+		}

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/LogConverterTask.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/LogConverterTask.java
new file mode 100644
index 0000000..376e9fb
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/LogConverterTask.java
@@ -0,0 +1,60 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.ant;

+

+import org.apache.tools.ant.BuildException;

+import org.apache.tools.ant.Task;

+

+/**

+ * This ant task is used to convert all xml files inside the given <code>logDirectory</code> and

+ * into html or txt files.

+ *

+ * <p>The resulting files are written in the same directory than the corresponding xml file.</p>

+ *

+ * <p>This is not intended to be subclassed by users.</p>

+ */

+public class LogConverterTask extends Task {

+

+	private String input;

+

+	private boolean validation;

+

+	public String getInput() {

+		return this.input;

+	}

+

+	public void setInput(String logDirectory) {

+		this.input = logDirectory;

+	}

+

+	public boolean isValidation() {

+		return this.validation;

+	}

+

+	public void setValidation(boolean validation) {

+		this.validation = validation;

+	}

+

+	public void execute() throws BuildException {

+		if (this.input == null) {

+			throw new BuildException("No input is specified");//$NON-NLS-1$

+		}

+		try {

+			if (isValidation()) {

+				Converter.run(new String[] {"-v", "-r", "-i", this.input}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

+			} else {

+				Converter.run(new String[] {"-r", "-i", this.input}); //$NON-NLS-1$ //$NON-NLS-2$

+			}

+		} catch (Exception e) {

+			throw new BuildException("Exception during conversion", e);//$NON-NLS-1$

+		}

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/Messages.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/Messages.java
new file mode 100644
index 0000000..9565378
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/Messages.java
@@ -0,0 +1,30 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.ant;

+

+import java.util.MissingResourceException;

+import java.util.ResourceBundle;

+

+public class Messages {

+	private final ResourceBundle resourceBundle;

+

+	public Messages(String bundleName) {

+		this.resourceBundle = ResourceBundle.getBundle(bundleName);

+	}

+

+	public String getString(String key) {

+		try {

+			return this.resourceBundle.getString(key);

+		} catch (MissingResourceException e) {

+			return '!' + key + '!';

+		}

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/html_messages.properties b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/html_messages.properties
new file mode 100644
index 0000000..a4807e9
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/html_messages.properties
@@ -0,0 +1,205 @@
+###############################################################################
+# Copyright (c) 2000, 2007 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+# {0} plugin name
+# {1} xml log file name
+dom_header=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n\
+<html>\n\
+<head>\n\
+\ \ \ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n\
+\ \ \ <title>Compiler log for {0}</title>\n\
+</head>\n\
+<body>\n\
+<h2>Compiler log for {0} : <a href="{1}">{1}</a></h2>\n
+
+header=<\!doctype html public "-//w3c//dtd html 4.0 transitional//en">\n\
+<html>\n\
+<head>\n\
+\ \ \ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n\
+\ \ \ <title>Compiler log</title>\n\
+</head>\n\
+<body>\n
+
+footer=</body>\n</html>\n
+
+# {0] source file name
+# {1} number of problems
+# {2} number of errors
+# {3} number of warnings
+problems.footer=
+
+errors.title_anchor=<a name="ERROR"></a><h1>ERRORS</h1>\n
+
+# {0] source file name
+# {1} number of errors
+errors.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-bottom-color: #FF0000; border-left-color: #FF0000; border-color: #FF0000; border-right-color: #FF0000; border-top-color: #FF0000;" border="2" cellpadding="5">\n
+errors.footer=</table>\n
+
+other_warnings.title_anchor=<a name="OTHER_WARNINGS"></a><h1>OTHER WARNINGS</h1>\n
+
+# {0] source file name
+# {1} number of warnings
+other_warnings.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-color: #000000;" border="1" cellpadding="5">\n<caption><b><font color="#CC6633">OTHER WARNINGS</font></b></caption>\n
+other_warnings.footer=</table>\n
+
+forbidden_warnings.title_anchor=<a name="FORBIDDEN_WARNINGS"></a><h1>FORBIDDEN ACCESS WARNINGS</h1>\n
+# {0] source file name
+# {1} number of warnings
+forbidden_warnings.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-color: #000000;" border="1" cellpadding="5">\n<caption><b><font color="#CC6633">FORBIDDEN ACCESS WARNINGS</font></b></caption>\n
+forbidden_warnings.footer=</table>\n
+
+discouraged_warnings.title_anchor=<a name="DISCOURAGED_WARNINGS"></a><h1>DISCOURAGED ACCESS WARNINGS</h1>\n
+# {0] source file name
+# {1} number of warnings
+discouraged_warnings.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-color: #000000;" border="1" cellpadding="5">\n<caption><b><font color="#CC6633">DISCOURAGED ACCESS WARNINGS</font></b></caption>\n
+discouraged_warnings.footer=</table>\n
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+errors.entry.even=<tr>\n\
+\	<td align=left valign=top style="border-bottom-color: #FF0000; border-left-color: #FF0000; border-color: #FF0000; border-right-color: #FF0000; border-top-color: #FF0000;">{2}.&nbsp;ERROR&nbsp;in&nbsp;{0}<br/>\n\
+\		&nbsp;(at line {4})<br/>\n\
+\		{6}<b>{7}</b>{8}<br/>\n\
+\		<i>{5}</i>\n\
+\	</td>\n\
+\</tr>\n
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+errors.entry.odd=<tr>\n\
+\	<td align=left valign=top style="border-bottom-color: #FF0000; border-left-color: #FF0000; border-color: #FF0000; border-right-color: #FF0000; border-top-color: #FF0000;">{2}.&nbsp;ERROR&nbsp;in&nbsp;{0}<br/>\n\
+\		&nbsp;(at line {4})<br/>\n\
+\		{6}<b>{7}</b>{8}<br/>\n\
+\		<i>{5}</i>\n\
+\	</td>\n\
+\</tr>\n
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+warnings.entry.even=<tr>\n\
+\	<td align=left valign=top>{2}.&nbsp;WARNING&nbsp;in&nbsp;{0}<br/>\n\
+\		&nbsp;(at line {4})<br/>\n\
+\		{6}<b>{7}</b>{8}<br/>\n\
+\		<i>{5}</i>\n\
+\	</td>\n\
+\</tr>\n
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+warnings.entry.odd=<tr>\n\
+\	<td align=left valign=top>{2}.&nbsp;WARNING&nbsp;in&nbsp;{0}<br/>\n\
+\		&nbsp;(at line {4})<br/>\n\
+\		{6}<b>{7}</b>{8}<br/>\n\
+\		<i>{5}</i>\n\
+\	</td>\n\
+\</tr>\n
+
+# {0} global number of problems
+# {1} global number of errors
+# {2} global number of warnings
+problem.summary=<h3><u><b>TOTAL</b></u>&nbsp;:&nbsp;ERRORS:&nbsp;{1},&nbsp;WARNINGS:&nbsp;{2}</h3>\n
+
+problem.summary.title_anchor=<a name="TOP"></a>\n
+
+anchors.references.no_top=\n\
+<table>\n\
+<tr>\n\
+<td><a href="#ERROR">errors</a></td>\n\
+<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
+<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
+<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
+</tr>\n\
+</table>\n
+
+anchors.references.no_errors=\n\
+<table>\n\
+<tr>\n\
+<td><a href="#TOP">top</a></td>\n\
+<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
+<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
+<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
+</tr>\n\
+</table>\n
+
+anchors.references.no_other_warnings=\n\
+<table>\n\
+<tr>\n\
+<td><a href="#TOP">top</a></td>\n\
+<td><a href="#ERROR">errors</a></td>\n\
+<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
+<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
+</tr>\n\
+</table>\n
+
+anchors.references.no_forbidden_warnings=\n\
+<table>\n\
+<tr>\n\
+<td><a href="#TOP">top</a></td>\n\
+<td><a href="#ERROR">errors</a></td>\n\
+<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
+<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
+</tr>\n\
+</table>\n
+
+anchors.references.no_discouraged_warnings=\n\
+<table>\n\
+<tr>\n\
+<td><a href="#TOP">top</a></td>\n\
+<td><a href="#ERROR">errors</a></td>\n\
+<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
+<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
+</tr>\n\
+</table>\n
+
+one_warning=1 warning
+multiple_warnings={1,number} warnings
+
+one_error=1 error
+multiple_errors={1,number} errors
\ No newline at end of file
diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/txt_messages.properties b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/txt_messages.properties
new file mode 100644
index 0000000..99b2974
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/ant/txt_messages.properties
@@ -0,0 +1,110 @@
+###############################################################################
+# Copyright (c) 2000, 2007 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+header=
+# {0} plugin name
+# {1} xml log file name
+dom_header= log for {0}
+footer=
+# {0] source file name
+# {1} number of problems
+# {2} number of errors
+# {3} number of warnings
+
+problems.header=----------\n
+# {0] source file name
+# {1} number of problems
+# {2} number of errors
+# {3} number of warnings
+problems.footer={1} problem(s) ({2} error(s), {3} warning(s))
+
+errors.header=
+errors.footer=
+
+warnings.header=
+warnings.footer=
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+errors.entry.odd={1}. ERROR in {0}\n\
+ (at line {4})\n\
+\	{6}{7}{8}\n\	{9}\n\
+{5}\n\
+----------\n
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+errors.entry.even={1}. ERROR in {0}\n\
+ (at line {4})\n\
+\	{6}{7}{8}\n\	{9}\n\
+{5}\n\
+----------\n
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+warnings.entry.odd={1}. WARNING in {0}\n\
+ (at line {4})\n\
+\	{6}{7}{8}\n\	{9}\n\
+{5}\n\
+----------\n
+
+# {0} source file name
+# {1} global error number
+# {2} error number
+# {3} error id
+# {4} line number of the error
+# {5} error message
+# {6} source code before this error
+# {7} source code corresponding to this error
+# {8} source code after this error
+# {9} complement to underline the problem
+# {10} starting position of the error
+# {11} ending position of the error
+warnings.entry.even={1}. WARNING in {0}\n\
+ (at line {4})\n\
+\	{6}{7}{8}\n\	{9}\n\
+{5}\n\
+----------\n
+
+# {0} global number of problems
+# {1} global number of errors
+# {2} global number of warnings
+# {3} global number of tasks
+problem_summary={0} problem(s) ({1} error(s), {2} warning(s))
\ No newline at end of file
diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/application/LogConverter.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/application/LogConverter.java
new file mode 100644
index 0000000..fc0ae9c
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/application/LogConverter.java
@@ -0,0 +1,18 @@
+package org.eclipse.releng.build.tools.convert.application;

+

+import org.eclipse.equinox.app.IApplication;

+import org.eclipse.equinox.app.IApplicationContext;

+import org.eclipse.releng.build.tools.convert.ant.Converter;

+

+public class LogConverter implements IApplication {

+

+	public Object start(IApplicationContext context) throws Exception {

+		String[] args = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS);

+		Converter.main(args);

+		return IApplication.EXIT_OK;

+	}

+

+	public void stop() {

+		// nothing to do

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/AbstractDOMConverter.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/AbstractDOMConverter.java
new file mode 100644
index 0000000..fa757cb
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/AbstractDOMConverter.java
@@ -0,0 +1,353 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+import java.io.BufferedWriter;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.io.Writer;

+import java.text.ChoiceFormat;

+import java.text.MessageFormat;

+import java.util.HashSet;

+import java.util.Map;

+

+import org.eclipse.releng.build.tools.convert.ant.Converter;

+import org.eclipse.releng.build.tools.convert.ant.Messages;

+

+public abstract class AbstractDOMConverter implements IDOMConverter {

+	public static final HashSet FILTERED_WARNINGS_IDS;

+

+	public static final String FORBIDDEN_REFERENCE = "ForbiddenReference"; //$NON-NLS-1$

+	public static final String DISCOURAGED_REFERENCE = "DiscouragedReference"; //$NON-NLS-1$

+

+	static {

+		FILTERED_WARNINGS_IDS = new HashSet();

+		FILTERED_WARNINGS_IDS.add(FORBIDDEN_REFERENCE);

+		FILTERED_WARNINGS_IDS.add(DISCOURAGED_REFERENCE);

+	}

+

+	protected Messages messages;

+

+

+	private String convertToHTML(String s) {

+		StringBuffer buffer = new StringBuffer();

+		for (int i = 0, max = s.length(); i < max; i++) {

+			final char c = s.charAt(i);

+			switch(c) {

+				case '<' :

+					buffer.append("&lt;"); //$NON-NLS-1$

+					break;

+				case '>' :

+					buffer.append("&gt;"); //$NON-NLS-1$

+					break;

+				case '\"' :

+					buffer.append("&quot;"); //$NON-NLS-1$

+					break;

+				case '&' :

+					buffer.append("&amp;"); //$NON-NLS-1$

+					break;

+				case '^' :

+					buffer.append("&and;"); //$NON-NLS-1$

+					break;

+				default:

+					buffer.append(c);

+			}

+		}

+		return String.valueOf(buffer);

+	}

+

+	public void dump(int formatVersion, Map options, LogDocumentNode documentNode) {

+		switch(formatVersion) {

+			case Converter.FORMAT_VERSION_2 :

+				dumpVersion2(options, documentNode);

+		}

+	}

+

+	private void dumpVersion2(Map options, LogDocumentNode documentNode) {

+		String fileName = (String) options.get(Converter.OUTPUT_FILE_NAME);

+		final ProblemSummaryNode summaryNode = documentNode.getSummaryNode();

+		if (summaryNode == null ||

+				(summaryNode.numberOfErrors == 0 && summaryNode.numberOfWarnings == 0)) return;

+		try {

+			Writer writer = new BufferedWriter(new FileWriter(fileName));

+			final String pluginName = extractPluginName(fileName);

+			if (pluginName == null) {

+				writer.write(this.messages.getString("header")); //$NON-NLS-1$

+			} else {

+				String pattern = this.messages.getString("dom_header"); //$NON-NLS-1$

+				writer.write(

+					MessageFormat.format(pattern,

+						new Object[] {

+							pluginName,

+							extractXmlFileName((String) options.get(Converter.INPUT_SOURCE))

+						}

+					));

+			}

+			ProblemSummaryNode problemSummaryNode = summaryNode;

+			writeTopAnchor(writer);

+			String pattern = this.messages.getString("problem.summary"); //$NON-NLS-1$

+			writer.write(MessageFormat.format(pattern,

+				new Object[] {

+					Integer.toString(problemSummaryNode.numberOfProblems),

+					Integer.toString(problemSummaryNode.numberOfErrors),

+					Integer.toString(problemSummaryNode.numberOfWarnings)

+				}));

+

+			writeAnchorsReferences(writer);

+			ProblemsNode[] problemsNodes = documentNode.getProblems();

+			int globalErrorNumber = 1;

+

+			writeErrorAnchor(writer);

+			writeAnchorsReferencesErrors(writer);

+			// dump errors

+			for (int i = 0, max = problemsNodes.length; i < max; i++) {

+				final ProblemsNode problemsNode = problemsNodes[i];

+				ProblemNode[] problemNodes = problemsNode.getErrors();

+				int length = problemNodes.length;

+				if (length == 0) continue;

+				pattern = this.messages.getString("errors.header"); //$NON-NLS-1$

+

+				MessageFormat form = new MessageFormat(pattern);

+				double[] warningsLimits = {1,2};

+				String[] warningParts = {

+						this.messages.getString("one_error"), //$NON-NLS-1$

+						this.messages.getString("multiple_errors") //$NON-NLS-1$

+				};

+				ChoiceFormat warningForm = new ChoiceFormat(warningsLimits, warningParts);

+				final String sourceFileName = extractRelativePath(problemsNode.sourceFileName, pluginName);

+				form.setFormatByArgumentIndex(1, warningForm);

+				Object[] arguments = new Object[] {

+						sourceFileName,

+						new Integer(problemsNode.numberOfErrors),

+				};

+				writer.write(form.format(arguments));

+				for (int j = 0; j < length; j++) {

+					ProblemNode problemNode = problemNodes[j];

+					if ((j & 1) != 0) {

+						pattern = this.messages.getString("errors.entry.odd"); //$NON-NLS-1$

+					} else {

+						pattern = this.messages.getString("errors.entry.even"); //$NON-NLS-1$

+					}

+					problemNode.setSources();

+					writer.write(MessageFormat.format(pattern,

+						new Object[] {

+							sourceFileName,

+							Integer.toString(globalErrorNumber),

+							Integer.toString(j + 1),

+							problemNode.id,

+							Integer.toString(problemNode.line),

+							convertToHTML(problemNode.message),

+							convertToHTML(problemNode.sourceCodeBefore),

+							convertToHTML(problemNode.sourceCode),

+							convertToHTML(problemNode.sourceCodeAfter),

+							getUnderLine(problemNode.sourceCodeBefore, problemNode.sourceCodeAfter),

+							Integer.toString(problemNode.charStart),

+							Integer.toString(problemNode.charEnd),

+						}));

+					globalErrorNumber++;

+				}

+				writer.write(this.messages.getString("errors.footer")); //$NON-NLS-1$

+			}

+

+			writeOtherWarningsAnchor(writer);

+			writeAnchorsReferencesOtherWarnings(writer);

+			// dump other warnings

+			for (int i = 0, max = problemsNodes.length; i < max; i++) {

+				final ProblemsNode problemsNode = problemsNodes[i];

+				ProblemNode[] problemNodes = problemsNode.getOtherWarnings();

+				int length = problemNodes.length;

+				if (length == 0) continue;

+

+				pattern = this.messages.getString("other_warnings.header"); //$NON-NLS-1$

+				MessageFormat form = new MessageFormat(pattern);

+				double[] warningsLimits = {1,2};

+				String[] warningParts = {

+						this.messages.getString("one_warning"),//$NON-NLS-1$

+						this.messages.getString("multiple_warnings")//$NON-NLS-1$

+				};

+				ChoiceFormat warningForm = new ChoiceFormat(warningsLimits, warningParts);

+				final String sourceFileName = extractRelativePath(problemsNode.sourceFileName, pluginName);

+				form.setFormatByArgumentIndex(1, warningForm);

+				Object[] arguments = new Object[] {

+						sourceFileName,

+						new Integer(problemsNode.numberOfWarnings),

+				};

+				writer.write(form.format(arguments));

+				for (int j = 0; j < length; j++) {

+					ProblemNode problemNode = problemNodes[j];

+					if ((j & 1) != 0) {

+						pattern = this.messages.getString("warnings.entry.odd"); //$NON-NLS-1$

+					} else {

+						pattern = this.messages.getString("warnings.entry.even"); //$NON-NLS-1$

+					}

+					problemNode.setSources();

+					writer.write(MessageFormat.format(pattern,

+						new Object[] {

+							sourceFileName,

+							Integer.toString(globalErrorNumber),

+							Integer.toString(j + 1),

+							problemNode.id,

+							Integer.toString(problemNode.line),

+							convertToHTML(problemNode.message),

+							convertToHTML(problemNode.sourceCodeBefore),

+							convertToHTML(problemNode.sourceCode),

+							convertToHTML(problemNode.sourceCodeAfter),

+							getUnderLine(problemNode.sourceCodeBefore, problemNode.sourceCodeAfter),

+							Integer.toString(problemNode.charStart),

+							Integer.toString(problemNode.charEnd),

+						}));

+					globalErrorNumber++;

+				}

+				writer.write(this.messages.getString("other_warnings.footer")); //$NON-NLS-1$

+			}

+

+			// dump forbidden accesses warnings

+			writeForbiddenRulesWarningsAnchor(writer);

+			writeAnchorsReferencesForbiddenRulesWarnings(writer);

+			for (int i = 0, max = problemsNodes.length; i < max; i++) {

+				final ProblemsNode problemsNode = problemsNodes[i];

+				ProblemNode[] problemNodes = problemsNode.getForbiddenWarnings();

+				int length = problemNodes.length;

+				if (length == 0) continue;

+

+				pattern = this.messages.getString("forbidden_warnings.header"); //$NON-NLS-1$

+				MessageFormat form = new MessageFormat(pattern);

+				double[] warningsLimits = {1,2};

+				String[] warningParts = {

+						this.messages.getString("one_warning"),//$NON-NLS-1$

+						this.messages.getString("multiple_warnings")//$NON-NLS-1$

+				};

+				ChoiceFormat warningForm = new ChoiceFormat(warningsLimits, warningParts);

+				final String sourceFileName = extractRelativePath(problemsNode.sourceFileName, pluginName);

+				form.setFormatByArgumentIndex(1, warningForm);

+				Object[] arguments = new Object[] {

+						sourceFileName,

+						new Integer(problemsNode.numberOfWarnings),

+				};

+				writer.write(form.format(arguments));

+				for (int j = 0; j < length; j++) {

+					ProblemNode problemNode = problemNodes[j];

+					if ((j & 1) != 0) {

+						pattern = this.messages.getString("warnings.entry.odd"); //$NON-NLS-1$

+					} else {

+						pattern = this.messages.getString("warnings.entry.even"); //$NON-NLS-1$

+					}

+					problemNode.setSources();

+					writer.write(MessageFormat.format(pattern,

+						new Object[] {

+							sourceFileName,

+							Integer.toString(globalErrorNumber),

+							Integer.toString(j + 1),

+							problemNode.id,

+							Integer.toString(problemNode.line),

+							convertToHTML(problemNode.message),

+							convertToHTML(problemNode.sourceCodeBefore),

+							convertToHTML(problemNode.sourceCode),

+							convertToHTML(problemNode.sourceCodeAfter),

+							getUnderLine(problemNode.sourceCodeBefore, problemNode.sourceCodeAfter),

+							Integer.toString(problemNode.charStart),

+							Integer.toString(problemNode.charEnd),

+						}));

+					globalErrorNumber++;

+				}

+				writer.write(this.messages.getString("forbidden_warnings.footer")); //$NON-NLS-1$

+			}

+

+			// dump discouraged accesses warnings

+			writeDiscouragedRulesWarningsAnchor(writer);

+			writeAnchorsReferencesDiscouragedRulesWarnings(writer);

+			for (int i = 0, max = problemsNodes.length; i < max; i++) {

+				final ProblemsNode problemsNode = problemsNodes[i];

+				ProblemNode[] problemNodes = problemsNode.getDiscouragedWarnings();

+				int length = problemNodes.length;

+				if (length == 0) continue;

+

+				pattern = this.messages.getString("discouraged_warnings.header"); //$NON-NLS-1$

+				MessageFormat form = new MessageFormat(pattern);

+				double[] warningsLimits = {1,2};

+				String[] warningParts = {

+						this.messages.getString("one_warning"),//$NON-NLS-1$

+						this.messages.getString("multiple_warnings")//$NON-NLS-1$

+				};

+				ChoiceFormat warningForm = new ChoiceFormat(warningsLimits, warningParts);

+				final String sourceFileName = extractRelativePath(problemsNode.sourceFileName, pluginName);

+				form.setFormatByArgumentIndex(1, warningForm);

+				Object[] arguments = new Object[] {

+						sourceFileName,

+						new Integer(problemsNode.numberOfWarnings),

+				};

+				writer.write(form.format(arguments));

+				for (int j = 0; j < length; j++) {

+					ProblemNode problemNode = problemNodes[j];

+					if ((j & 1) != 0) {

+						pattern = this.messages.getString("warnings.entry.odd"); //$NON-NLS-1$

+					} else {

+						pattern = this.messages.getString("warnings.entry.even"); //$NON-NLS-1$

+					}

+					problemNode.setSources();

+					writer.write(MessageFormat.format(pattern,

+						new Object[] {

+							sourceFileName,

+							Integer.toString(globalErrorNumber),

+							Integer.toString(j + 1),

+							problemNode.id,

+							Integer.toString(problemNode.line),

+							convertToHTML(problemNode.message),

+							convertToHTML(problemNode.sourceCodeBefore),

+							convertToHTML(problemNode.sourceCode),

+							convertToHTML(problemNode.sourceCodeAfter),

+							getUnderLine(problemNode.sourceCodeBefore, problemNode.sourceCodeAfter),

+							Integer.toString(problemNode.charStart),

+							Integer.toString(problemNode.charEnd),

+						}));

+					globalErrorNumber++;

+				}

+				writer.write(this.messages.getString("discouraged_warnings.footer")); //$NON-NLS-1$

+			}

+

+			writer.write(this.messages.getString("footer")); //$NON-NLS-1$

+			writer.flush();

+			writer.close();

+		} catch (IOException e) {

+			// ignore

+		}

+	}

+

+	private String extractPluginName(String fileName) {

+		// fileName is fully qualified and we want to extract the segment before the log file name

+		// file name contains only '/'

+		String logName = fileName.replace('\\', '/');

+		int index = logName.lastIndexOf('/');

+		if (index == -1) return null;

+		int index2 = logName.lastIndexOf('/', index - 1);

+		if (index2 == -1) return null;

+		return logName.substring(index2 + 1, index);

+	}

+

+	private String extractRelativePath(String sourceFileName, String pluginName) {

+		if (pluginName == null) return sourceFileName;

+		int index = pluginName.indexOf('_');

+		if (index == -1) return sourceFileName;

+		String pluginShortName = pluginName.substring(0, index);

+		int index2 = sourceFileName.indexOf(pluginShortName);

+		if (index2 == -1) return sourceFileName;

+		return sourceFileName.substring(index2 + pluginShortName.length(), sourceFileName.length());

+	}

+

+	private String extractXmlFileName(String fileName) {

+		// fileName is fully qualified and we want to extract the segment before the log file name

+		// file name contains only '/'

+		String logName = fileName.replace('\\', '/');

+		int index = logName.lastIndexOf('/');

+		if (index == -1) return null;

+		return logName.substring(index + 1, logName.length());

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/DOMHtmlConverter.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/DOMHtmlConverter.java
new file mode 100644
index 0000000..d54203c
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/DOMHtmlConverter.java
@@ -0,0 +1,69 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+import java.io.IOException;

+import java.io.Writer;

+

+import org.eclipse.releng.build.tools.convert.ant.ConverterFactory;

+import org.eclipse.releng.build.tools.convert.ant.Messages;

+

+public class DOMHtmlConverter extends AbstractDOMConverter {

+

+	public DOMHtmlConverter() {

+		//this.messages = new Messages("org.eclipse.releng.build.tools.convert.ant.html_messages"); //$NON-NLS-1$

+		this.messages = new Messages("org.eclipse.releng.build.tools.convert.ant.html_messages"); //$NON-NLS-1$

+	}

+

+	public String getUnderLine(String sourceBefore, String sourceOfError) {

+		return ConverterFactory.EMPTY;

+	}

+

+	public void writeAnchorsReferences(Writer writer) throws IOException {

+		writer.write(this.messages.getString("anchors.references.no_top"));//$NON-NLS-1$

+	}

+

+	public void writeAnchorsReferencesErrors(Writer writer) throws IOException {

+		writer.write(this.messages.getString("anchors.references.no_errors"));//$NON-NLS-1$

+	}

+

+	public void writeAnchorsReferencesOtherWarnings(Writer writer) throws IOException {

+		writer.write(this.messages.getString("anchors.references.no_other_warnings"));//$NON-NLS-1$

+	}

+

+	public void writeAnchorsReferencesForbiddenRulesWarnings(Writer writer) throws IOException {

+		writer.write(this.messages.getString("anchors.references.no_forbidden_warnings"));//$NON-NLS-1$

+	}

+

+	public void writeAnchorsReferencesDiscouragedRulesWarnings(Writer writer) throws IOException {

+		writer.write(this.messages.getString("anchors.references.no_discouraged_warnings"));//$NON-NLS-1$

+	}

+

+	public void writeErrorAnchor(Writer writer) throws IOException {

+		writer.write(this.messages.getString("errors.title_anchor"));//$NON-NLS-1$

+	}

+

+	public void writeOtherWarningsAnchor(Writer writer) throws IOException {

+		writer.write(this.messages.getString("other_warnings.title_anchor"));//$NON-NLS-1$

+	}

+

+	public void writeForbiddenRulesWarningsAnchor(Writer writer) throws IOException {

+		writer.write(this.messages.getString("forbidden_warnings.title_anchor"));//$NON-NLS-1$

+	}

+

+	public void writeDiscouragedRulesWarningsAnchor(Writer writer) throws IOException {

+		writer.write(this.messages.getString("discouraged_warnings.title_anchor"));//$NON-NLS-1$

+	}

+

+	public void writeTopAnchor(Writer writer) throws IOException {

+		writer.write(this.messages.getString("problem.summary.title_anchor"));//$NON-NLS-1$

+	}

+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/DOMTxtConverter.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/DOMTxtConverter.java
new file mode 100644
index 0000000..b0103c7
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/DOMTxtConverter.java
@@ -0,0 +1,82 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+import java.io.IOException;

+import java.io.Writer;

+

+import org.eclipse.releng.build.tools.convert.ant.Messages;

+

+public class DOMTxtConverter extends AbstractDOMConverter {

+

+	public DOMTxtConverter() {

+		this.messages = new Messages("org.eclipse.releng.build.tools.convert.ant.txt_messages"); //$NON-NLS-1$

+	}

+

+	public String getUnderLine(String sourceBefore, String sourceOfError) {

+		StringBuffer buffer = new StringBuffer();

+		char[] chars = sourceBefore.toCharArray();

+		for (int i = 0, max = chars.length; i < max; i++) {

+			switch(chars[i]) {

+				case '\t' :

+					buffer.append('\t');

+					break;

+				default:

+					buffer.append(' ');

+			}

+		}

+		chars = sourceOfError.toCharArray();

+		for (int i = 0, max = chars.length; i < max; i++) {

+			buffer.append('^');

+		}

+		return String.valueOf(buffer);

+	}

+

+	public void writeAnchorsReferences(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeAnchorsReferencesErrors(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeAnchorsReferencesOtherWarnings(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeAnchorsReferencesForbiddenRulesWarnings(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeAnchorsReferencesDiscouragedRulesWarnings(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeErrorAnchor(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeOtherWarningsAnchor(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeForbiddenRulesWarningsAnchor(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeDiscouragedRulesWarningsAnchor(Writer writer) throws IOException {

+		// do nothing

+	}

+

+	public void writeTopAnchor(Writer writer) throws IOException {

+		// do nothing

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/IDOMConverter.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/IDOMConverter.java
new file mode 100644
index 0000000..e8b4ef4
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/IDOMConverter.java
@@ -0,0 +1,42 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+import java.io.IOException;

+import java.io.Writer;

+import java.util.Map;

+

+public interface IDOMConverter {

+

+	String getUnderLine(String sourceBefore, String sourceOfError);

+

+	void dump(int formatVersion, Map options, LogDocumentNode documentNode);

+

+	void writeAnchorsReferences(Writer writer) throws IOException;

+

+	void writeAnchorsReferencesErrors(Writer writer) throws IOException;

+

+	void writeAnchorsReferencesOtherWarnings(Writer writer) throws IOException;

+

+	void writeAnchorsReferencesForbiddenRulesWarnings(Writer writer) throws IOException;

+

+	void writeAnchorsReferencesDiscouragedRulesWarnings(Writer writer) throws IOException;

+

+	void writeTopAnchor(Writer writer) throws IOException;

+

+	void writeErrorAnchor(Writer writer) throws IOException;

+

+	void writeOtherWarningsAnchor(Writer writer) throws IOException;

+

+	void writeForbiddenRulesWarningsAnchor(Writer writer) throws IOException;

+

+	void writeDiscouragedRulesWarningsAnchor(Writer writer) throws IOException;

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/LogDocumentNode.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/LogDocumentNode.java
new file mode 100644
index 0000000..ceb86bc
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/LogDocumentNode.java
@@ -0,0 +1,43 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+import java.util.ArrayList;

+

+public class LogDocumentNode {

+	private static final ProblemsNode[] NO_PROBLEM_NODES = new ProblemsNode[0];

+	private ArrayList problems;

+	private ProblemSummaryNode summaryNode;

+	private ProblemsNode[] problemsNodes;

+

+	public void addProblemsNode(ProblemsNode node) {

+		if (this.problems == null) this.problems = new ArrayList();

+		this.problems.add(node);

+	}

+

+	public void setProblemSummary(ProblemSummaryNode node) {

+		this.summaryNode = node;

+	}

+

+	public ProblemsNode[] getProblems() {

+		if (this.problemsNodes != null) return this.problemsNodes;

+		if (this.problems == null) {

+			return this.problemsNodes = NO_PROBLEM_NODES;

+		}

+		this.problemsNodes = new ProblemsNode[this.problems.size()];

+		this.problems.toArray(this.problemsNodes);

+		return this.problemsNodes;

+	}

+

+	public ProblemSummaryNode getSummaryNode() {

+		return this.summaryNode;

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemNode.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemNode.java
new file mode 100644
index 0000000..82e8c07
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemNode.java
@@ -0,0 +1,64 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+public class ProblemNode {

+	protected static final String EMPTY = ""; //$NON-NLS-1$

+

+	public boolean isError;

+	public int charStart;

+	public int charEnd;

+	public int line;

+	public String id;

+	public String message;

+	public int sourceStart;

+	public int sourceEnd;

+	public String contextValue;

+	public int globalProblemNumber;

+	public int problemNumber;

+	public String sourceFileName;

+

+	public String sourceCodeBefore;

+	public String sourceCodeAfter;

+	public String sourceCode;

+

+	public String toString() {

+		StringBuffer buffer = new StringBuffer();

+		buffer.append(this.isError ? "ERROR " : "WARNING "); //$NON-NLS-1$//$NON-NLS-2$

+		buffer.append("line : ").append(this.line).append(" message = ").append(this.message);//$NON-NLS-1$//$NON-NLS-2$

+		return buffer.toString();

+	}

+

+	public void setSources() {

+		if (this.sourceStart == -1 || this.sourceEnd == -1) {

+			this.sourceCodeBefore = EMPTY;

+			this.sourceCode = this.contextValue;

+			this.sourceCodeAfter = EMPTY;

+		} else {

+			int length = this.contextValue.length();

+			if (this.sourceStart < length) {

+				this.sourceCodeBefore = this.contextValue.substring(0, this.sourceStart);

+				int end = this.sourceEnd + 1;

+				if (end < length) {

+					this.sourceCode = this.contextValue.substring(this.sourceStart, end);

+					this.sourceCodeAfter = this.contextValue.substring(end, length);

+				} else {

+					this.sourceCode = this.contextValue.substring(this.sourceStart, length);

+					this.sourceCodeAfter = EMPTY;

+				}

+			} else {

+				this.sourceCodeBefore = EMPTY;

+				this.sourceCode = EMPTY;

+				this.sourceCodeAfter = EMPTY;

+			}

+		}

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemSummaryNode.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemSummaryNode.java
new file mode 100644
index 0000000..85ffcce
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemSummaryNode.java
@@ -0,0 +1,30 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+public class ProblemSummaryNode {

+

+	public int numberOfProblems;

+	public int numberOfErrors;

+	public int numberOfWarnings;

+

+	public String toString() {

+		StringBuffer buffer = new StringBuffer();

+		buffer

+			.append("problems : ") //$NON-NLS-1$

+			.append(this.numberOfProblems)

+			.append(" errors : ") //$NON-NLS-1$

+			.append(this.numberOfErrors)

+			.append(" warnings : ") //$NON-NLS-1$

+			.append(this.numberOfWarnings);

+		return buffer.toString();

+	}

+}

diff --git a/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemsNode.java b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemsNode.java
new file mode 100644
index 0000000..c679a24
--- /dev/null
+++ b/bundles/org.eclipse.releng.build.tools.convert/src/org/eclipse/releng/build/tools/convert/dom/ProblemsNode.java
@@ -0,0 +1,83 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2007 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.releng.build.tools.convert.dom;

+

+import java.util.ArrayList;

+

+public class ProblemsNode {

+	private static final ProblemNode[] EMPTY_NODES = new ProblemNode[0];

+

+	public String sourceFileName;

+	public int numberOfProblems;

+	public int numberOfErrors;

+	public int numberOfWarnings;

+

+	private ArrayList errorNodes;

+	private ArrayList otherWarningNodes;

+	private ArrayList discouragedWarningsNodes;

+	private ArrayList forbiddenWarningsNodes;

+	private ProblemNode[] errors;

+	private ProblemNode[] otherWarnings;

+	private ProblemNode[] discouragedWarnings;

+	private ProblemNode[] forbiddenWarnings;

+

+	public void addError(ProblemNode node) {

+		if (this.errorNodes == null) this.errorNodes = new ArrayList();

+		this.errorNodes.add(node);

+	}

+

+	public void addForbiddenWarning(ProblemNode node) {

+		if (this.forbiddenWarningsNodes == null) this.forbiddenWarningsNodes = new ArrayList();

+		this.forbiddenWarningsNodes.add(node);

+	}

+

+	public void addDiscouragedWarning(ProblemNode node) {

+		if (this.discouragedWarningsNodes == null) this.discouragedWarningsNodes = new ArrayList();

+		this.discouragedWarningsNodes.add(node);

+	}

+

+	public void addOtherWarning(ProblemNode node) {

+		if (this.otherWarningNodes == null) this.otherWarningNodes= new ArrayList();

+		this.otherWarningNodes.add(node);

+	}

+

+	public ProblemNode[] getErrors() {

+		if (this.errors != null) return this.errors;

+		if (this.errorNodes == null) return this.errors = EMPTY_NODES;

+		this.errors = new ProblemNode[this.errorNodes.size()];

+		this.errorNodes.toArray(this.errors);

+		return this.errors;

+	}

+

+	public ProblemNode[] getOtherWarnings() {

+		if (this.otherWarnings != null) return this.otherWarnings;

+		if (this.otherWarningNodes == null) return this.otherWarnings = EMPTY_NODES;

+		this.otherWarnings = new ProblemNode[this.otherWarningNodes.size()];

+		this.otherWarningNodes.toArray(this.otherWarnings);

+		return this.otherWarnings;

+	}

+

+	public ProblemNode[] getDiscouragedWarnings() {

+		if (this.discouragedWarnings != null) return this.discouragedWarnings;

+		if (this.discouragedWarningsNodes == null) return this.discouragedWarnings = EMPTY_NODES;

+		this.discouragedWarnings = new ProblemNode[this.discouragedWarningsNodes.size()];

+		this.discouragedWarningsNodes.toArray(this.discouragedWarnings);

+		return this.discouragedWarnings;

+	}

+

+	public ProblemNode[] getForbiddenWarnings() {

+		if (this.forbiddenWarnings != null) return this.forbiddenWarnings;

+		if (this.forbiddenWarningsNodes == null) return this.forbiddenWarnings = EMPTY_NODES;

+		this.forbiddenWarnings = new ProblemNode[this.forbiddenWarningsNodes.size()];

+		this.forbiddenWarningsNodes.toArray(this.forbiddenWarnings);

+		return this.forbiddenWarnings;

+	}

+}