Back ported performance tests to 2.1.3 release (where possible)
diff --git a/org.eclipse.jdt.ui.tests.refactoring/.classpath b/org.eclipse.jdt.ui.tests.refactoring/.classpath
index 282d64a..a335ee5 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/.classpath
+++ b/org.eclipse.jdt.ui.tests.refactoring/.classpath
@@ -1,14 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-    <classpathentry kind="src" path="test cases"/>
-    <classpathentry kind="src" path="/org.eclipse.jdt.ui.tests"/>
-    <classpathentry kind="src" path="/org.junit"/>
-    <classpathentry kind="src" path="/org.eclipse.jdt.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.jdt.core"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="src" path="/org.eclipse.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.core.boot"/>
-    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-    <classpathentry kind="output" path="bin"/>
+	<classpathentry kind="src" path="test cases"/>
+	<classpathentry kind="src" path="/org.eclipse.jdt.ui.tests"/>
+	<classpathentry kind="src" path="/org.junit"/>
+	<classpathentry kind="src" path="/org.eclipse.jdt.ui"/>
+	<classpathentry kind="src" path="/org.eclipse.jdt.core"/>
+	<classpathentry kind="src" path="/org.eclipse.core.resources"/>
+	<classpathentry kind="src" path="/org.eclipse.core.runtime"/>
+	<classpathentry kind="src" path="/org.eclipse.ui"/>
+	<classpathentry kind="src" path="/org.eclipse.core.boot"/>
+	<classpathentry kind="src" path="/org.eclipse.test.performance"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/org.eclipse.jdt.ui.tests.refactoring/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.ui.tests.refactoring/.settings/org.eclipse.jdt.core.prefs
index 5f03173..239bbc9 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jdt.ui.tests.refactoring/.settings/org.eclipse.jdt.core.prefs
@@ -1,9 +1,12 @@
-#Wed Sep 01 12:06:36 CEST 2004

+#Thu Nov 11 14:52:12 CET 2004

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

 org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error

+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore

+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

 org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning

+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning

 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

 org.eclipse.jdt.core.compiler.problem.unusedImport=error

 org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

@@ -17,48 +20,50 @@
 org.eclipse.jdt.core.compiler.source=1.3

 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

 org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

 org.eclipse.jdt.core.compiler.compliance=1.4

-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error

+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error

+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error

+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore

 org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning

 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled

 org.eclipse.jdt.core.incompatibleJDKLevel=ignore

 eclipse.preferences.version=1

 org.eclipse.jdt.core.circularClasspath=error

-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

 org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

 org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

 org.eclipse.jdt.core.compiler.debug.sourceFile=generate

 org.eclipse.jdt.core.compiler.doc.comment.support=enabled

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error

+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

 org.eclipse.jdt.core.incompleteClasspath=error

-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore

 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

diff --git a/org.eclipse.jdt.ui.tests.refactoring/plugin.xml b/org.eclipse.jdt.ui.tests.refactoring/plugin.xml
index 85c34ba..375b134 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/plugin.xml
+++ b/org.eclipse.jdt.ui.tests.refactoring/plugin.xml
@@ -15,6 +15,7 @@
       <import plugin="org.eclipse.jdt.core"/>
       <import plugin="org.eclipse.jdt.ui"/>
 	  <import plugin="org.eclipse.jdt.ui.tests"/>
+	  <import plugin="org.eclipse.test.performance"/>
    </requires>
 
   <runtime>
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractRefactoringTestSetup.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractRefactoringTestSetup.java
index f01d161..9e5d66c 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractRefactoringTestSetup.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractRefactoringTestSetup.java
@@ -10,20 +10,11 @@
  *******************************************************************************/
 package org.eclipse.jdt.ui.tests.refactoring.infra;
 
-import java.util.Hashtable;
-
 import junit.extensions.TestSetup;
 import junit.framework.Test;
 
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
-
-import org.eclipse.jdt.internal.corext.template.java.CodeTemplateContextType;
-
 import org.eclipse.jdt.internal.ui.JavaPlugin;
-
 import org.eclipse.jdt.testplugin.JavaProjectHelper;
-import org.eclipse.jdt.testplugin.TestOptions;
 
 public class AbstractRefactoringTestSetup extends TestSetup {
 
@@ -38,38 +29,10 @@
 		fWasAutobuild= JavaProjectHelper.setAutoBuilding(false);
 		if (JavaPlugin.getActivePage() != null)
 			JavaPlugin.getActivePage().close();
-
-		Hashtable options= TestOptions.getFormatterOptions();
-		options.put(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, JavaCore.TAB);
-		options.put(DefaultCodeFormatterConstants.FORMATTER_NUMBER_OF_EMPTY_LINES_TO_PRESERVE, "0");
-		options.put(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, "4");
-		JavaCore.setOptions(options);
-		TestOptions.initializeCodeGenerationOptions();
-		JavaPlugin.getDefault().getCodeTemplateStore().load();		
-		
-		StringBuffer comment= new StringBuffer();
-		comment.append("/**\n");
-		comment.append(" * ${tags}\n");
-		comment.append(" */");
-		JavaPlugin.getDefault().getCodeTemplateStore().findTemplate(CodeTemplateContextType.CONSTRUCTORCOMMENT).setPattern(comment.toString());
 	}
 	
 	protected void tearDown() throws Exception {
 		JavaProjectHelper.setAutoBuilding(fWasAutobuild);
-		/* 
-		 * ensure the workbench state gets saved when running with the Automated Testing Framework
-         * TODO: remove when https://bugs.eclipse.org/bugs/show_bug.cgi?id=71362 is fixed
-         */
-		/* Not needed for JDT/UI tests right now.
-		StackTraceElement[] elements=  new Throwable().getStackTrace();
-		for (int i= 0; i < elements.length; i++) {
-			StackTraceElement element= elements[i];
-			if (element.getClassName().equals("org.eclipse.test.EclipseTestRunner")) {
-				PlatformUI.getWorkbench().close();
-				break;
-			}
-		}
-		*/
 		super.tearDown();
 	}
 }
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/RefactoringPerformanceTestCase.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/RefactoringPerformanceTestCase.java
index cda31e2..e273305 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/RefactoringPerformanceTestCase.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/RefactoringPerformanceTestCase.java
@@ -10,18 +10,28 @@
  *******************************************************************************/
 package org.eclipse.jdt.ui.tests.refactoring.infra;
 
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.resources.ResourcesPlugin;
 
+import org.eclipse.jdt.core.JavaModelException;
+
+import org.eclipse.jdt.internal.corext.refactoring.base.ChangeContext;
+import org.eclipse.jdt.internal.corext.refactoring.base.IChange;
+import org.eclipse.jdt.internal.corext.refactoring.base.IRefactoring;
+import org.eclipse.jdt.internal.corext.refactoring.base.Refactoring;
+import org.eclipse.jdt.internal.corext.refactoring.base.RefactoringStatus;
+
 import org.eclipse.jdt.ui.tests.performance.JdtPerformanceTestCase;
 
-import org.eclipse.ltk.core.refactoring.CheckConditionsOperation;
-import org.eclipse.ltk.core.refactoring.PerformRefactoringOperation;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringCore;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-
 public abstract class RefactoringPerformanceTestCase extends JdtPerformanceTestCase {
 	
+	private RefactoringStatus fStatus;
+	private IChange fUndo;
+	
 	public RefactoringPerformanceTestCase() {
 		super();
 	}
@@ -38,21 +48,46 @@
 		executeRefactoring(refactoring, measure, maxSeverity, true);
 	}
 	
-	protected void executeRefactoring(Refactoring refactoring, boolean measure, int maxSeverity, boolean checkUndo) throws Exception {
-		PerformRefactoringOperation operation= new PerformRefactoringOperation(refactoring, CheckConditionsOperation.ALL_CONDITIONS);
+	protected void executeRefactoring(final Refactoring refactoring, boolean measure, int maxSeverity, boolean checkUndo) throws Exception {
 		joinBackgroudActivities();
 		System.gc();
 		if (measure)
 			startMeasuring();
-		ResourcesPlugin.getWorkspace().run(operation, null);
+		ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+			public void run(IProgressMonitor monitor) throws CoreException {
+				performRefactoring(refactoring);
+			}
+		}, null);
 		if (measure)
 			finishMeasurements();
-		assertEquals(true, operation.getConditionStatus().getSeverity() <= maxSeverity);
-		assertEquals(true, operation.getValidationStatus().isOK());
+		assertEquals(true, fStatus.getSeverity() <= maxSeverity);
 		if (checkUndo) {
-			assertNotNull(operation.getUndoChange());
+			assertNotNull(fUndo);
 		}
-		RefactoringCore.getUndoManager().flush();
+		Refactoring.getUndoManager().flush();
 		System.gc();
 	}
+	
+	private void performRefactoring(IRefactoring ref) throws JavaModelException {
+		fStatus= ref.checkPreconditions(new NullProgressMonitor());
+		if (fStatus.hasFatalError())
+			return;
+
+		IChange change= ref.createChange(new NullProgressMonitor());
+		performChange(change);
+
+		fUndo= change.getUndoChange();
+		Refactoring.getUndoManager().addUndo(ref.getName(), fUndo);
+
+		return;
+	}
+	
+	private void performChange(IChange change) throws JavaModelException{
+		change.aboutToPerform(new ChangeContext(new TestExceptionHandler()), new NullProgressMonitor());
+		try {
+			change.perform(new ChangeContext(new TestExceptionHandler()), new NullProgressMonitor());
+		} finally {
+			change.performed();
+		}
+	}
 }
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractMoveStaticMemberPrefTest.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractMoveStaticMemberPrefTest.java
index 71df883..215281c 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractMoveStaticMemberPrefTest.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractMoveStaticMemberPrefTest.java
@@ -15,12 +15,10 @@
 import org.eclipse.jdt.core.IPackageFragment;
 import org.eclipse.jdt.core.IType;
 
-import org.eclipse.jdt.internal.corext.refactoring.structure.MoveStaticMembersProcessor;
+import org.eclipse.jdt.internal.corext.refactoring.structure.MoveStaticMembersRefactoring;
 
 import org.eclipse.jdt.internal.ui.preferences.JavaPreferencesSettings;
 
-import org.eclipse.ltk.core.refactoring.participants.MoveRefactoring;
-
 
 public class AbstractMoveStaticMemberPrefTest extends RepeatingRefactoringPerformanceTestCase {
 
@@ -32,7 +30,7 @@
 		ICompilationUnit cunit= generateSources(numberOfCus, numberOfRefs);
 		IType type= cunit.findPrimaryType();
 		IMember member= type.getField("VALUE");
-		MoveStaticMembersProcessor processor= MoveStaticMembersProcessor.create(
+		MoveStaticMembersRefactoring refactoring= new MoveStaticMembersRefactoring(
 			new IMember[] {member},
 			JavaPreferencesSettings.getCodeGenerationSettings());
 		IPackageFragment destPack= fTestProject.getSourceFolder().createPackageFragment("destination", false, null);
@@ -42,8 +40,8 @@
 		buf.append("}\n");
 		ICompilationUnit destination= destPack.createCompilationUnit("Dest.java", buf.toString(), false, null);
 		
-		processor.setDestinationTypeFullyQualifiedName(destination.findPrimaryType().getFullyQualifiedName());
-		executeRefactoring(new MoveRefactoring(processor), measure);
+		refactoring.setDestinationTypeFullyQualifiedName(destination.findPrimaryType().getFullyQualifiedName());
+		executeRefactoring(refactoring, measure);
 	}
 
 	private ICompilationUnit generateSources(int numberOfCus, int numberOfRefs) throws Exception {
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameMethodPerfTest.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameMethodPerfTest.java
index f9b85da..d5706e4 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameMethodPerfTest.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameMethodPerfTest.java
@@ -14,8 +14,7 @@
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IPackageFragment;
 
-import org.eclipse.jdt.internal.corext.refactoring.rename.RenameVirtualMethodProcessor;
-import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
+import org.eclipse.jdt.internal.corext.refactoring.rename.RenameMethodRefactoring;
 
 
 public class AbstractRenameMethodPerfTest extends RepeatingRefactoringPerformanceTestCase {
@@ -27,9 +26,9 @@
 	protected void doExecuteRefactoring(int numberOfCus, int numberOfRefs, boolean measure) throws Exception {
 		ICompilationUnit cunit= generateSources(numberOfCus, numberOfRefs);
 		IMethod method= cunit.findPrimaryType().getMethod("foo", new String[0]);
-		RenameVirtualMethodProcessor processor= new RenameVirtualMethodProcessor(method);
-		processor.setNewElementName("foo2");
-		executeRefactoring(new RenameRefactoring(processor), measure);
+		RenameMethodRefactoring refactoring= RenameMethodRefactoring.createInstance(method);
+		refactoring.setNewName("foo2");
+		executeRefactoring(refactoring, measure);
 	}
 
 	private ICompilationUnit generateSources(int numberOfCus, int numberOfRefs) throws Exception {
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenamePackagePerfTest.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenamePackagePerfTest.java
index 32c4245..877f3be 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenamePackagePerfTest.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenamePackagePerfTest.java
@@ -12,8 +12,7 @@
 
 import org.eclipse.jdt.core.IPackageFragment;
 
-import org.eclipse.jdt.internal.corext.refactoring.rename.RenamePackageProcessor;
-import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
+import org.eclipse.jdt.internal.corext.refactoring.rename.RenamePackageRefactoring;
 
 public class AbstractRenamePackagePerfTest extends RepeatingRefactoringPerformanceTestCase {
 
@@ -23,9 +22,9 @@
 
 	protected void doExecuteRefactoring(int numberOfCus, int numberOfRefs, boolean measure) throws Exception {
 		IPackageFragment pack= generateSources(numberOfCus, numberOfRefs);
-		RenamePackageProcessor processor= new RenamePackageProcessor(pack);
-		processor.setNewElementName("pack2");
-		executeRefactoring(new RenameRefactoring(processor), measure);
+		RenamePackageRefactoring refactoring= new RenamePackageRefactoring(pack);
+		refactoring.setNewName("pack2");
+		executeRefactoring(refactoring, measure);
 	}
 
 	private IPackageFragment generateSources(int numberOfCus, int numberOfRefs) throws Exception {
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameTypePerfTest.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameTypePerfTest.java
index cdb700a..191c73a 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameTypePerfTest.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AbstractRenameTypePerfTest.java
@@ -14,8 +14,7 @@
 import org.eclipse.jdt.core.IPackageFragment;
 import org.eclipse.jdt.core.IType;
 
-import org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor;
-import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
+import org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeRefactoring;
 
 
 public class AbstractRenameTypePerfTest extends RepeatingRefactoringPerformanceTestCase {
@@ -27,9 +26,9 @@
 	protected void doExecuteRefactoring(int numberOfCus, int numberOfRefs, boolean measure) throws Exception {
 		ICompilationUnit cunit= generateSources(numberOfCus, numberOfRefs);
 		IType type= cunit.findPrimaryType();
-		RenameTypeProcessor processor= new RenameTypeProcessor(type);
-		processor.setNewElementName("B");
-		executeRefactoring(new RenameRefactoring(processor), measure);
+		RenameTypeRefactoring refactoring= new RenameTypeRefactoring(type);
+		refactoring.setNewName("B");
+		executeRefactoring(refactoring, measure);
 	}
 
 	private ICompilationUnit generateSources(int numberOfCus, int numberOfRefs) throws Exception {
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AllReorgPerformanceTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AllReorgPerformanceTests.java
index ce25aa5..e8609c5 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AllReorgPerformanceTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/AllReorgPerformanceTests.java
@@ -29,9 +29,6 @@
 		suite.addTest(RenameMethodWithHidingPerfTests.suite());
 		suite.addTest(RenameMethodWithOverloadPerfTests.suite());
 		
-		suite.addTest(MoveCompilationUnitPerfTests1.suite());
-		suite.addTest(MoveCompilationUnitPerfTests2.suite());
-		
 		suite.addTest(MoveStaticMembersPerfTests1.suite());
 		suite.addTest(MoveStaticMembersPerfTests2.suite());
 		
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithHidingPerfTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithHidingPerfTests.java
index d4156eb..1d263ef 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithHidingPerfTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithHidingPerfTests.java
@@ -19,13 +19,11 @@
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IPackageFragment;
 
-import org.eclipse.jdt.internal.corext.refactoring.rename.RenameVirtualMethodProcessor;
+import org.eclipse.jdt.internal.corext.refactoring.base.RefactoringStatus;
+import org.eclipse.jdt.internal.corext.refactoring.rename.RenameMethodRefactoring;
 
 import org.eclipse.jdt.ui.tests.refactoring.infra.RefactoringPerformanceTestSetup;
 
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
-
 public class RenameMethodWithHidingPerfTests extends RepeatingRefactoringPerformanceTestCase {
 
 	public static Test suite() {
@@ -56,9 +54,9 @@
 	protected void doExecuteRefactoring(int numberOfCus, int numberOfRefs, boolean measure) throws Exception {
 		ICompilationUnit cunit= generateSources(fTestProject);
 		IMethod method= cunit.findPrimaryType().getMethod("setString", new String[] {"QString;"});
-		RenameVirtualMethodProcessor processor= new RenameVirtualMethodProcessor(method);
-		processor.setNewElementName("set");
-		executeRefactoring(new RenameRefactoring(processor), measure, RefactoringStatus.ERROR);
+		RenameMethodRefactoring refactoring= RenameMethodRefactoring.createInstance(method);
+		refactoring.setNewName("set");
+		executeRefactoring(refactoring, measure, RefactoringStatus.ERROR);
 	}
 	
 	private ICompilationUnit generateSources(TestProject testProject) throws Exception {
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithOverloadPerfTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithOverloadPerfTests.java
index 56a526f..7eb40eb 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithOverloadPerfTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameMethodWithOverloadPerfTests.java
@@ -19,12 +19,11 @@
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IPackageFragment;
 
-import org.eclipse.jdt.internal.corext.refactoring.rename.RenameVirtualMethodProcessor;
+import org.eclipse.jdt.internal.corext.refactoring.base.RefactoringStatus;
+import org.eclipse.jdt.internal.corext.refactoring.rename.RenameMethodRefactoring;
 
 import org.eclipse.jdt.ui.tests.refactoring.infra.RefactoringPerformanceTestSetup;
 
-import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
-
 public class RenameMethodWithOverloadPerfTests extends RepeatingRefactoringPerformanceTestCase {
 
 	public static Test suite() {
@@ -65,9 +64,9 @@
 	protected void doExecuteRefactoring(int numberOfCus, int numberOfRefs, boolean measure) throws Exception {
 		ICompilationUnit cunit= generateSources(numberOfCus, numberOfRefs);
 		IMethod method= cunit.findPrimaryType().getMethod("setString", new String[] {"QString;"});
-		RenameVirtualMethodProcessor processor= new RenameVirtualMethodProcessor(method);
-		processor.setNewElementName("set");
-		executeRefactoring(new RenameRefactoring(processor), measure);
+		RenameMethodRefactoring refactoring= RenameMethodRefactoring.createInstance(method);
+		refactoring.setNewName("set");
+		executeRefactoring(refactoring, measure, RefactoringStatus.ERROR);
 	}
 	
 	private ICompilationUnit generateSources(int numberOfCus, int numberOfRefs) throws Exception {
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameTypePerfAcceptanceTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameTypePerfAcceptanceTests.java
index 70df7ca..a0025b2 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameTypePerfAcceptanceTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/reorg/RenameTypePerfAcceptanceTests.java
@@ -21,14 +21,12 @@
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaCore;
 
-import org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor;
+import org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeRefactoring;
 
 import org.eclipse.jdt.ui.tests.performance.SWTTestProject;
 import org.eclipse.jdt.ui.tests.refactoring.infra.RefactoringPerformanceTestCase;
 import org.eclipse.jdt.ui.tests.refactoring.infra.SWTProjectTestSetup;
 
-import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
-
 public class RenameTypePerfAcceptanceTests extends RefactoringPerformanceTestCase {
 	
 	private IJavaProject fProject;
@@ -57,16 +55,16 @@
 	
 	public void testCold() throws Exception {
 		IType control= fProject.findType("org.eclipse.swt.widgets.Control");
-		RenameTypeProcessor processor= new RenameTypeProcessor(control);
-		processor.setNewElementName("Control2");
-		executeRefactoring(new RenameRefactoring(processor), false);
+		RenameTypeRefactoring refactoring= new RenameTypeRefactoring(control);
+		refactoring.setNewName("Control2");
+		executeRefactoring(refactoring, false);
 	}
 	
 	public void testWarm() throws Exception {
 		tagAsGlobalSummary("Rename of Control", new Dimension[] {Dimension.CPU_TIME, Dimension.USED_JAVA_HEAP});
 		IType control= fProject.findType("org.eclipse.swt.widgets.Control2");
-		RenameTypeProcessor processor= new RenameTypeProcessor(control);
-		processor.setNewElementName("Control");
-		executeRefactoring(new RenameRefactoring(processor), true);
+		RenameTypeRefactoring refactoring= new RenameTypeRefactoring(control);
+		refactoring.setNewName("Control");
+		executeRefactoring(refactoring, true);
 	}
 }
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test.xml b/org.eclipse.jdt.ui.tests.refactoring/test.xml
index cc94e82..77176bc 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test.xml
+++ b/org.eclipse.jdt.ui.tests.refactoring/test.xml
@@ -48,4 +48,69 @@
     </ant>
   </target>
 
+
+	<!-- performance test target -->
+	<target name="performance-suite">
+		<property name="jdt-ui-refactoring-performance-folder" value="${eclipse-home}/jdt_ui_refactoring_performance_folder"/>
+		<property name="data-dir" value="${jdt-ui-refactoring-performance-folder}"/>
+		<property name="plugin-name" value="${plugin-name}"/>
+	
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenamePackagePerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenamePackagePerfTests2"/>
+		</ant>
+	
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfAcceptanceTests"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfTests2"/>
+		</ant>
+	
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodPerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodPerfTests2"/>
+		</ant>
+	
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodWithOverloadPerfTests"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodWithHidingPerfTests"/>
+		</ant>
+	
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveStaticMembersPerfTests1"/>
+		</ant>
+		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
+		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveStaticMembersPerfTests2"/>
+		</ant>
+	</target>
+
+	<!-- This target runs the performance test suite. Any actions that need to happen -->
+	<!-- after all the tests have been run should go here. -->
+	<target name="performance" depends="init,performance-suite,cleanup">
+		<ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
+			<property name="includes" value="org*.xml"/>
+			<property name="output-file" value="${plugin-name}.xml"/>
+		</ant>
+	</target>	
 </project>
diff --git a/org.eclipse.jdt.ui.tests/.classpath b/org.eclipse.jdt.ui.tests/.classpath
index fb2041b..b010cc8 100644
--- a/org.eclipse.jdt.ui.tests/.classpath
+++ b/org.eclipse.jdt.ui.tests/.classpath
@@ -3,6 +3,7 @@
     <classpathentry kind="src" path="examples/"/>
     <classpathentry kind="src" path="test plugin/"/>
     <classpathentry kind="src" path="ui/"/>
+    <classpathentry kind="src" path="performance"/>
     <classpathentry kind="src" path="/org.junit"/>
     <classpathentry kind="src" path="/org.eclipse.core.resources"/>
     <classpathentry kind="src" path="/org.apache.xerces"/>
@@ -10,8 +11,9 @@
     <classpathentry kind="src" path="/org.eclipse.jdt.core"/>
     <classpathentry kind="src" path="/org.eclipse.jdt.ui"/>
     <classpathentry kind="src" path="/org.eclipse.jdt.launching"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
+    <classpathentry kind="src" path="/org.eclipse.test.performance"/>
     <classpathentry kind="src" path="/org.eclipse.core.boot"/>
+    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
     <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
     <classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/org.eclipse.jdt.ui.tests/.project b/org.eclipse.jdt.ui.tests/.project
index e676f70..58d0681 100644
--- a/org.eclipse.jdt.ui.tests/.project
+++ b/org.eclipse.jdt.ui.tests/.project
@@ -12,6 +12,7 @@
 		<project>org.eclipse.jdt.launching</project>
 		<project>org.eclipse.jdt.ui</project>
 		<project>org.eclipse.swt</project>
+		<project>org.eclipse.test.performance</project>
 		<project>org.eclipse.ui</project>
 		<project>org.junit</project>
 	</projects>
diff --git a/org.eclipse.jdt.ui.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
index ba98fb1..538adfb 100644
--- a/org.eclipse.jdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.jdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,9 +1,12 @@
-#Wed Sep 01 12:04:13 CEST 2004

+#Thu Nov 11 15:12:05 CET 2004

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

 org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error

+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore

+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

 org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning

+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning

 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

 org.eclipse.jdt.core.compiler.problem.unusedImport=error

 org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

@@ -17,48 +20,50 @@
 org.eclipse.jdt.core.compiler.source=1.3

 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

 org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

 org.eclipse.jdt.core.compiler.compliance=1.4

-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error

+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error

+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error

+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore

 org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning

 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled

 org.eclipse.jdt.core.incompatibleJDKLevel=ignore

 eclipse.preferences.version=1

 org.eclipse.jdt.core.circularClasspath=error

-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

 org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

 org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

 org.eclipse.jdt.core.compiler.debug.sourceFile=generate

 org.eclipse.jdt.core.compiler.doc.comment.support=enabled

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error

+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

 org.eclipse.jdt.core.incompleteClasspath=error

-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore

 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

diff --git a/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/FileTool.java b/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/FileTool.java
index 4907773..7575ebb 100644
--- a/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/FileTool.java
+++ b/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/FileTool.java
@@ -36,16 +36,15 @@
 	/**
 	 * A buffer.
 	 */
-	private static byte[] fgBuffer = new byte[8192];
-	
+	private static byte[] buffer = new byte[8192];
 	/**
 	 * Unzips the given zip file to the given destination directory
 	 * extracting only those entries the pass through the given
 	 * filter.
 	 * 
+	 * @param filter filters out unwanted zip entries
 	 * @param zipFile the zip file to unzip
 	 * @param dstDir the destination directory
-	 * @throws IOException
 	 */
 	public static void unzip(ZipFile zipFile, File dstDir) throws IOException {
 		unzip(zipFile, dstDir, dstDir, 0);
@@ -107,14 +106,12 @@
 	public static String changeSeparator(String path, char oldSeparator, char newSeparator){
 		return path.replace(oldSeparator, newSeparator);
 	}
-	
 	/**
 	 * Copies all bytes in the given source file to
 	 * the given destination file.
 	 * 
 	 * @param source the given source file
 	 * @param destination the given destination file
-	 * @throws IOException
 	 */
 	public static void transferData(File source, File destination) throws IOException {
 		destination.getParentFile().mkdirs();
@@ -139,7 +136,6 @@
 			}
 		}
 	}
-	
 	/**
 	 * Copies all bytes in the given source stream to
 	 * the given destination stream. Neither streams
@@ -147,14 +143,13 @@
 	 * 
 	 * @param source the given source stream
 	 * @param destination the given destination stream
-	 * @throws IOException
 	 */
 	public static void transferData(InputStream source, OutputStream destination) throws IOException {
 		int bytesRead = 0;
 		while(bytesRead != -1){
-			bytesRead = source.read(fgBuffer, 0, fgBuffer.length);
+			bytesRead = source.read(buffer, 0, buffer.length);
 			if(bytesRead != -1){
-				destination.write(fgBuffer, 0, bytesRead);
+				destination.write(buffer, 0, bytesRead);
 			}
 		}
 	}
@@ -164,7 +159,6 @@
 	 * 
 	 * @param src the given source file
 	 * @param dst the given destination file
-	 * @throws IOException
 	 */
 	public static void copy(File src, File dst) throws IOException {
 		if(src.isDirectory()){
@@ -180,7 +174,7 @@
 
 	public static File getFileInPlugin(Plugin plugin, IPath path) {
 		try {
-			URL installURL= plugin.getBundle().getEntry(path.toString());
+			URL installURL= new URL(plugin.getDescriptor().getInstallURL(), path.toString());
 			URL localURL= Platform.asLocalURL(installURL);
 			return new File(localURL.getFile());
 		} catch (IOException e) {
diff --git a/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/JdtPerformanceTestCase.java b/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/JdtPerformanceTestCase.java
index 664ec7c..07c5950 100644
--- a/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/JdtPerformanceTestCase.java
+++ b/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/JdtPerformanceTestCase.java
@@ -13,21 +13,15 @@
 
 import java.util.ArrayList;
 
-import org.eclipse.test.performance.PerformanceTestCase;
-
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.core.resources.ResourcesPlugin;
-
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.search.IJavaSearchConstants;
 import org.eclipse.jdt.core.search.ITypeNameRequestor;
 import org.eclipse.jdt.core.search.SearchEngine;
-import org.eclipse.jdt.core.search.SearchPattern;
-
 import org.eclipse.jdt.internal.corext.util.AllTypesCache;
+import org.eclipse.test.performance.PerformanceTestCase;
 
 public class JdtPerformanceTestCase extends PerformanceTestCase {
 
@@ -47,21 +41,13 @@
 	}
 	
 	protected void joinBackgroudActivities() throws CoreException {
-		// Join Building
-		boolean interrupted= true;
-		while (interrupted) {
-			try {
-				Platform.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_BUILD, null);
-				interrupted= false;
-			} catch (InterruptedException e) {
-				interrupted= true;
-			}
-		}
 		// Join indexing
 		new SearchEngine().searchAllTypeNames(
+			ResourcesPlugin.getWorkspace(),
 			null,
 			null,
-			SearchPattern.R_EXACT_MATCH,
+			IJavaSearchConstants.EXACT_MATCH,
+			IJavaSearchConstants.CASE_SENSITIVE,
 			IJavaSearchConstants.CLASS,
 			SearchEngine.createJavaSearchScope(new IJavaElement[0]),
 			new Requestor(),
diff --git a/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/SWTTestProject.java b/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/SWTTestProject.java
index e313d25..21b91a7 100644
--- a/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/SWTTestProject.java
+++ b/org.eclipse.jdt.ui.tests/performance/org/eclipse/jdt/ui/tests/performance/SWTTestProject.java
@@ -35,7 +35,7 @@
 public class SWTTestProject {
 	
 	public static final String PROJECT= "org.eclipse.swt";
-	private static final String PROJECT_ZIP= "/testResources/org.eclipse.swt-R3_0.zip";
+	private static final String PROJECT_ZIP= "testResources/org.eclipse.swt-R3_0.zip";
 
 	private IJavaProject fProject;
 	
diff --git a/org.eclipse.jdt.ui.tests/plugin.xml b/org.eclipse.jdt.ui.tests/plugin.xml
index a33a8c3..ae84943 100644
--- a/org.eclipse.jdt.ui.tests/plugin.xml
+++ b/org.eclipse.jdt.ui.tests/plugin.xml
@@ -15,6 +15,7 @@
       <import plugin="org.eclipse.jdt.core"/>
       <import plugin="org.eclipse.jdt.ui"/>
 	  <import plugin="org.eclipse.jdt.launching"/>
+	  <import plugin="org.eclipse.test.performance"/>
    </requires>
 
 <runtime>
diff --git a/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java b/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
index e088816..174c0f7 100644
--- a/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
+++ b/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
Binary files differ
diff --git a/org.eclipse.jdt.ui.tests/test.xml b/org.eclipse.jdt.ui.tests/test.xml
index 45036da..6495681 100644
--- a/org.eclipse.jdt.ui.tests/test.xml
+++ b/org.eclipse.jdt.ui.tests/test.xml
@@ -48,4 +48,49 @@
     </ant>
   </target>
 
+  <!-- performance test target -->
+  <target name="performance-suite">
+    <property name="jdt-ui-performance-folder" value="${eclipse-home}/jdt_ui_performance_folder"/>
+    <property name="data-dir" value="${jdt-ui-performance-folder}"/>
+    <property name="plugin-name" value="${plugin-name}"/>
+    
+    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
+    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.PerformanceTestSuite"/>
+    </ant>
+    
+    <!-- run the package explorer perf test 5 time -->
+    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
+    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
+    </ant>
+    
+    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
+    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
+    </ant>
+    
+    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
+    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
+    </ant>
+    
+    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
+    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
+    </ant>
+    
+    <delete dir="${jdt-ui-performance-folder}" quiet="true"/>
+    <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+      <property name="classname" value="org.eclipse.jdt.ui.tests.performance.views.PackageExplorerPerfTest"/>
+    </ant>
+  </target>
+	
+  <!-- This target runs the performance test suites. -->
+  <target name="performance" depends="init,performance-suite,cleanup">
+    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
+      <property name="includes" value="org*.xml"/>
+      <property name="output-file" value="${plugin-name}.xml"/>
+    </ant>
+  </target>		
 </project>