Bug 32138 - Performance problem while deleting lots of fields from the outliner
Summary: Performance problem while deleting lots of fields from the outliner
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows 2000
: P2 normal (vote)
Target Milestone: 2.1 RC1   Edit
Assignee: Adam Kiezun CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 32219
Blocks:
  Show dependency tree
 
Reported: 2003-02-18 12:02 EST by Olivier Thomann CLA
Modified: 2003-02-19 11:43 EST (History)
2 users (show)

See Also:


Attachments
Use the source files in this zip file (5.17 KB, application/octet-stream)
2003-02-18 12:03 EST, Olivier Thomann CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2003-02-18 12:02:44 EST
Using 0214, 
Take the file attached to this message and try to delete all fields. The delete
operation is called for each field instead of calling the delete operation for
all fields at the same time.
At least this operation should be batched.
The bug 32111 has been reported for a bug in JDT/Core. This bug will be fixed
today. So if you take our head you should be able to run the operation without
getting an error.
Comment 1 Olivier Thomann CLA 2003-02-18 12:03:44 EST
Created attachment 3550 [details]
Use the source files in this zip file

Test case.
Comment 2 Dirk Baeumer CLA 2003-02-18 12:15:13 EST
SourceReferenceAction.run should perform the action inside a workspace runnable 
passed tio JavaCore.run().
Comment 3 Adam Kiezun CLA 2003-02-18 13:27:39 EST
my test case:
class A{
  int w1;
  int w2;
}

calling ISourceReference.delete
on the 2 fields inside 1 JavaCore.run batch sends out 1 delta
[Working copy] A.java[*]: {CHILDREN | FINE GRAINED}
	A[*]: {CHILDREN | FINE GRAINED}
		w2[-]: {}

although both elements are deleted from the source
please comment on that
Comment 4 Olivier Thomann CLA 2003-02-18 13:42:13 EST
This is what I get with the test case I submitted:
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		TypeRelated[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		FieldRelated[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		MethodRelated[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		ConstructorRelated[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		ImportRelated[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		Internal[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		Syntax[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		IgnoreCategoriesMask[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		Unclassified[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		ObjectHasNoSuperclass[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		UndefinedType[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		NotVisibleType[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		AmbiguousType[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1
--------------------------------------------------------------------------------
---------------------------------------
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		UsingDeprecatedType[-]: {}
Listener 
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@11adeb
7
Listener 
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener
@5e9f1

The outliner is refreshed after each deletion. The reconcile is called too many 
times. Why this operation doesn't use the IJavaModel.delete method?

All deleted fields appear in the deltas.
Comment 5 Olivier Thomann CLA 2003-02-18 14:14:52 EST
Hacking the code to replace the delete calls on each field with a
IJavaModel.delete gives the following deltas:
FIRING PRE_AUTO_BUILD Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_CHANGE Delta [Thread[main,5,main]]:
<NONE>
FIRING POST_RECONCILE Delta [Thread[main,5,main]]:
[Working copy] IProblem.java[*]: {CHILDREN | FINE GRAINED}
	IProblem[*]: {CHILDREN | FINE GRAINED}
		UnreachableCatch[-]: {}
		DuplicateModifierForVariable[-]: {}
		CannotImportPackage[-]: {}
		InterfaceCannotHaveInitializers[-]: {}
		ReturnTypeInheritedNameHidesEnclosingName[-]: {}
		InvalidBreak[-]: {}
		CannotDefineStaticInitializerInLocalType[-]: {}
		ExceptionTypeAmbiguous[-]: {}
		VoidMethodReturnsValue[-]: {}
		UndefinedLabel[-]: {}
		TooManyFields[-]: {}
		MethodRequiresBody[-]: {}
		ArgumentTypeCannotBeVoidArray[-]: {}
		InvalidCharacterConstant[-]: {}
		ClassExtendFinalClass[-]: {}
		ArrayConstantsOnlyInArrayInitializers[-]: {}
		IsClassPathCorrect[-]: {}
		UnusedPrivateField[-]: {}
		DuplicateNestedType[-]: {}
		CannotThrowNull[-]: {}
		InvalidOctal[-]: {}
		ObjectHasNoSuperclass[-]: {}
		DuplicateCase[-]: {}
		OverridingDeprecatedMethod[-]: {}
		InvalidTypeToSynchronized[-]: {}
		ArgumentIsNeverUsed[-]: {}
		NotVisibleConstructorInImplicitConstructorCall[-]: {}
		InheritedFieldHidesEnclosingName[-]: {}
		IncompatibleExceptionInThrowsClause[-]: {}
		ArrayReferenceRequired[-]: {}
		HierarchyHasProblems[-]: {}
		BytecodeExceeds64KLimitForConstructor[-]: {}
		ExpressionShouldBeAVariable[-]: {}
		ThisSuperDuringConstructorInvocation[-]: {}
		UnhandledException[-]: {}
		IllegalModifierForArgument[-]: {}
		IllegalModifierForField[-]: {}
		UnhandledExceptionInDefaultConstructor[-]: {}
		TooManyArgumentSlots[-]: {}
		IllegalVisibilityModifierCombinationForMemberType[-]: {}
		DuplicateMethod[-]: {}
		NoImplicitStringConversionForCharArrayExpression[-]: {}
		ThisInStaticContext[-]: {}
		MethodReducesVisibility[-]: {}
		SuperclassNotFound[-]: {}
		AmbiguousConstructorInImplicitConstructorCall[-]: {}
		IllegalModifierForLocalClass[-]: {}
		NativeMethodsCannotBeStrictfp[-]: {}
		UsingDeprecatedConstructor[-]: {}
		AmbiguousField[-]: {}
		SuperclassInternalNameProvided[-]: {}
		NotVisibleMethod[-]: {}
		DuplicateBlankFinalFieldInitialization[-]: {}
		InterfaceNotFound[-]: {}
		NonStaticAccessToStaticField[-]: {}
		ReturnTypeInternalNameProvided[-]: {}
		IllegalVisibilityModifierForInterfaceMemberType[-]: {}
		ConflictingImport[-]: {}
		ExceptionTypeNotVisible[-]: {}
		OuterLocalMustBeFinal[-]: {}
		TypeRelated[-]: {}
		VariableTypeCannotBeVoidArray[-]: {}
		IllegalModifierForVariable[-]: {}
		InterfaceInheritedNameHidesEnclosingName[-]: {}
		InstanceMethodDuringConstructorInvocation[-]: {}
		ReturnTypeAmbiguous[-]: {}
		ParsingErrorOnKeyword[-]: {}
		IllegalModifierCombinationFinalVolatileForField[-]: {}
		CannotThrowType[-]: {}
		UnusedPrivateMethod[-]: {}
		ArgumentTypeNotVisible[-]: {}
		InvalidTypeExpression[-]: {}
		ArgumentTypeAmbiguous[-]: {}
		ImportNotFound[-]: {}
		NeedToEmulateFieldWriteAccess[-]: {}
		EndOfSource[-]: {}
		InvalidUnicodeEscape[-]: {}
		IllegalEnclosingInstanceSpecification[-]: {}
		IllegalModifierForClass[-]: {}
		CodeSnippetMissingMethod[-]: {}
		ReturnTypeNotFound[-]: {}
		UnexpectedStaticModifierForField[-]: {}
		InvalidOperator[-]: {}
		DuplicateModifierForMethod[-]: {}
		NotVisibleConstructorInDefaultConstructor[-]: {}
		UndefinedName[-]: {}
		Syntax[-]: {}
		IllegalModifierForMemberInterface[-]: {}
		NoMessageSendOnArrayType[-]: {}
		CannotDefineInterfaceInLocalType[-]: {}
		InterfaceCannotHaveConstructors[-]: {}
		PackageCollidesWithType[-]: {}
		Unclassified[-]: {}
		AbstractMethodCannotBeOverridden[-]: {}
		ExceptionTypeNotFound[-]: {}
		InvalidUnaryExpression[-]: {}
		DuplicateFinalLocalInitialization[-]: {}
		UndefinedType[-]: {}
		UndefinedConstructorInImplicitConstructorCall[-]: {}
		IllegalPrimitiveOrArrayTypeForEnclosingInstance[-]: {}
		MustSpecifyPackage[-]: {}
		CannotUseSuperInCodeSnippet[-]: {}
		AmbiguousConstructor[-]: {}
		TooManyConstantsInConstantPool[-]: {}
		NeedToEmulateFieldReadAccess[-]: {}
		NeedToEmulateMethodAccess[-]: {}
		MethodButWithConstructorName[-]: {}
		AmbiguousMethod[-]: {}
		UseAssertAsAnIdentifier[-]: {}
		NonStaticAccessToStaticMethod[-]: {}
		FieldTypeNotVisible[-]: {}
		DuplicateDefaultCase[-]: {}
		UndefinedConstructorInDefaultConstructor[-]: {}
		InvalidEscape[-]: {}
		UnterminatedComment[-]: {}
		DirectInvocationOfAbstractMethod[-]: {}
		Task[-]: {}
		InvalidParenthesizedExpression[-]: {}
		IllegalStaticModifierForMemberType[-]: {}
		NonBlankFinalLocalAssignment[-]: {}
		IncompatibleReturnTypeForNonInheritedInterfaceMethod[-]: {}
		SuperclassMustBeAClass[-]: {}
		UndefinedMethod[-]: {}
		TooManyMethods[-]: {}
		NotVisibleConstructor[-]: {}
		NotVisibleField[-]: {}
		ImportInheritedNameHidesEnclosingName[-]: {}
		NeedToEmulateConstructorAccess[-]: {}
		SuperclassAmbiguous[-]: {}
		ImportInternalNameProvided[-]: {}
		MissingSemiColon[-]: {}
		ParsingError[-]: {}
		NumericValueOutOfRange[-]: {}
		TypeCollidesWithPackage[-]: {}
		CodeCannotBeReached[-]: {}
		FieldTypeAmbiguous[-]: {}
		FinalFieldAssignment[-]: {}
		InvalidClassInstantiation[-]: {}
		InvalidExpressionAsStatement[-]: {}
		IllegalVisibilityModifierCombinationForMethod[-]: {}
		SuperclassInheritedNameHidesEnclosingName[-]: {}
		AmbiguousConstructorInDefaultConstructor[-]: {}
		IncompatibleTypesInEqualityOperator[-]: {}
		MaskedCatch[-]: {}
		BytecodeExceeds64KLimit[-]: {}
		InitializerMustCompleteNormally[-]: {}
		ConstructorRelated[-]: {}
		ArgumentTypeInternalNameProvided[-]: {}
		FieldTypeInheritedNameHidesEnclosingName[-]: {}
		UninitializedLocalVariable[-]: {}
		IncorrectEnclosingInstanceReference[-]: {}
		ExceptionTypeInternalNameProvided[-]: {}
		FieldTypeInternalNameProvided[-]: {}
		MissingReturnType[-]: {}
		DuplicateSuperInterface[-]: {}
		UninitializedBlankFinalField[-]: {}
		HierarchyCircularitySelfReference[-]: {}
		MustDefineEitherDimensionExpressionsOrInitializer[-]: {}
		NonStaticFieldFromStaticInvocation[-]: {}
		UsingDeprecatedType[-]: {}
		ImportRelated[-]: {}
		UnusedPrivateConstructor[-]: {}
		DuplicateModifierForArgument[-]: {}
		HierarchyCircularity[-]: {}
		MissingEnclosingInstance[-]: {}
		InvalidVoidExpression[-]: {}
		CannotHideAnInstanceMethodWithAStaticMethod[-]: {}
		OverridingNonVisibleMethod[-]: {}
		NoFieldOnBaseType[-]: {}
		VariableTypeCannotBeVoid[-]: {}
		CannotAllocateVoidArray[-]: {}
		IllegalModifierForMethod[-]: {}
		UndefinedField[-]: {}
		RedefinedLocal[-]: {}
		InvalidContinue[-]: {}
		InheritedMethodHidesEnclosingName[-]: {}
		InvalidInput[-]: {}
		StaticInheritedMethodConflicts[-]: {}
		IncompatibleTypesInConditionalOperator[-]: {}
		BytecodeExceeds64KLimitForClinit[-]: {}
		IllegalModifierForInterfaceField[-]: {}
		UnexpectedStaticModifierForMethod[-]: {}
		ParsingErrorNoSuggestion[-]: {}
		InvalidFloat[-]: {}
		ObjectCannotHaveSuperTypes[-]: {}
		UnhandledExceptionInImplicitConstructorCall[-]: {}
		InterfaceNotVisible[-]: {}
		TooManyLocalVariableSlots[-]: {}
		InheritedMethodReducesVisibility[-]: {}
		SuperclassNotVisible[-]: {}
		MethodRelated[-]: {}
		IllegalCast[-]: {}
		ShouldReturnValue[-]: {}
		InheritedTypeHidesEnclosingName[-]: {}
		ExceptionTypeInheritedNameHidesEnclosingName[-]: {}
		ArgumentTypeCannotBeVoid[-]: {}
		RecursiveConstructorInvocation[-]: {}
		StaticMethodRequested[-]: {}
		ArgumentTypeNotFound[-]: {}
		Internal[-]: {}
		HidingEnclosingType[-]: {}
		CannotReturnInInitializer[-]: {}
		UnterminatedString[-]: {}
		IllegalModifierForInterfaceMethod[-]: {}
		MissingEnclosingInstanceForConstructorCall[-]: {}
		IllegalModifierForMemberClass[-]: {}
		LocalVariableIsNeverUsed[-]: {}
		IllegalModifierCombinationFinalAbstractForClass[-]: {}
		EnclosingInstanceInConstructorCall[-]: {}
		FieldTypeNotFound[-]: {}
		ArgumentTypeInheritedNameHidesEnclosingName[-]: {}
		BodyForAbstractMethod[-]: {}
		IncompatibleReturnType[-]: {}
		ParameterMismatch[-]: {}
		InvalidNullToSynchronized[-]: {}
		ReturnTypeCannotBeVoidArray[-]: {}
		TooManyArrayDimensions[-]: {}
		AbstractMethodInAbstractClass[-]: {}
		ReferenceToForwardField[-]: {}
		DuplicateField[-]: {}
		PublicClassMustMatchFileName[-]: {}
		UndefinedConstructor[-]: {}
		StringConstantIsExceedingUtf8Limit[-]: {}
		NonExternalizedStringLiteral[-]: {}
		NonConstantExpression[-]: {}
		TooManyBytesForStringConstant[-]: {}
		AbstractMethodMustBeImplemented[-]: {}
		InstanceFieldDuringConstructorInvocation[-]: {}
		UnmatchedBracket[-]: {}
		InvalidHexa[-]: {}
		UnusedImport[-]: {}
		IncompatibleExceptionInInheritedMethodThrowsClause[-]: {}
		NoMessageSendOnBaseType[-]: {}
		InterfaceAmbiguous[-]: {}
		DuplicateModifierForType[-]: {}
		IllegalDimension[-]: {}
		UnusedPrivateType[-]: {}
		UsingDeprecatedMethod[-]: {}
		CodeSnippetMissingClass[-]: {}
		FinalMethodCannotBeOverridden[-]: {}
		RedefinedArgument[-]: {}
		CannotOverrideAStaticMethodWithAnInstanceMethod[-]: {}
		InterfaceInternalNameProvided[-]: {}
		NotVisibleType[-]: {}
		IncompatibleExceptionInThrowsClauseForNonInheritedInterfaceMethod[-]: {}
		DuplicateImport[-]: {}
		CannotDefineDimensionExpressionsWithInit[-]: {}
		FinalOuterLocalAssignment[-]: {}
		FieldRelated[-]: {}
		AmbiguousType[-]: {}
		NullSourceString[-]: {}
		AnonymousClassCannotExtendFinalClass[-]: {}
		InternalTypeNameProvided[-]: {}
		IncorrectSwitchType[-]: {}
		UsingDeprecatedField[-]: {}
		IgnoreCategoriesMask[-]: {}
		IllegalAbstractModifierCombinationForMethod[-]: {}
		AssignmentHasNoEffect[-]: {}
		DuplicateModifierForField[-]: {}
		MethodReturnsVoid[-]: {}
		ImportNotVisible[-]: {}
		IllegalModifierForInterface[-]: {}
		ParsingErrorOnKeywordNoSuggestion[-]: {}
		DuplicateTypes[-]: {}
		TypeMismatch[-]: {}
		ReturnTypeNotVisible[-]: {}
		PackageIsNotExpectedPackage[-]: {}
		TooManySyntheticArgumentSlots[-]: {}
		IllegalVisibilityModifierCombinationForField[-]: {}
		BodyForNativeMethod[-]: {}
		ImportAmbiguous[-]: {}
		SuperInterfaceMustBeAnInterface[-]: {}
		DuplicateLabel[-]: {}
Listener
#1=org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider@145f5e3
Listener
#2=org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$ElementChangedListener@19b2faf

It is much, much faster. So there is clearly room for improvements in the UI
code. I do get the 273 deletions in the deltas.
Move back to JDT/UI.
Comment 6 Adam Kiezun CLA 2003-02-19 05:08:13 EST
i thought JavaCore.run would do the trick
but then the delta is missing

will have a look at IJavaModel.delete
Comment 7 Adam Kiezun CLA 2003-02-19 05:59:58 EST
blocked by bug 32219

i mean, not really blocked but bug 32219 is trivial to fix so i'll wait for it
Comment 8 Jerome Lanneluc CLA 2003-02-19 06:28:39 EST
Adam, please open a bug for the problem described in comment #3
Comment 9 Adam Kiezun CLA 2003-02-19 07:20:08 EST
enteres as bug 32225
Comment 10 Adam Kiezun CLA 2003-02-19 11:43:55 EST
fixed