Bug 95388 - [code manipulation] NPE sorting members
Summary: [code manipulation] NPE sorting members
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.1 RC1   Edit
Assignee: Olivier Thomann CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 96583 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-05-16 12:20 EDT by DJ Houghton CLA
Modified: 2005-05-27 06:47 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description DJ Houghton CLA 2005-05-16 12:20:31 EDT
build M7

When you try and sort the members of a java file with duplicate method names,
you get an NPE.

Example class:

public class A {
	void z() {
	}
	void b() {
	}
	void b() {
	}
	void a() {
	}
}

Resulting stack from Source -> Sort Members:

!ENTRY org.eclipse.ui 4 0 2005-05-16 12:17:04.686
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
        at
org.eclipse.jdt.internal.corext.codemanipulation.SortMembersOperation$DefaultJavaElementComparator.compare(SortMembersOperation.java:164)
        at java.util.Arrays.mergeSort(Arrays.java:1292)
        at java.util.Arrays.sort(Arrays.java:1233)
        at java.util.Collections.sort(Collections.java:169)
        at
org.eclipse.jdt.internal.core.SortElementsOperation$1.visit(SortElementsOperation.java:174)
        at
org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:466)
        at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2450)
        at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2520)
        at
org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:299)
        at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2450)
        at
org.eclipse.jdt.internal.core.SortElementsOperation.processElement(SortElementsOperation.java:122)
        at
org.eclipse.jdt.internal.core.SortElementsOperation.executeOperation(SortElementsOperation.java:86)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1716)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:782)
        at
org.eclipse.jdt.core.util.CompilationUnitSorter.sort(CompilationUnitSorter.java:174)
        at
org.eclipse.jdt.internal.corext.codemanipulation.SortMembersOperation.run(SortMembersOperation.java:260)
        at
org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1716)
        at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3680)
        at
org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
        at
org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$BusyRunnable.internalRun(BusyIndicatorRunnableContext.java:113)
        at
org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$BusyRunnable.run(BusyIndicatorRunnableContext.java:80)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
        at
org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext.run(BusyIndicatorRunnableContext.java:126)
        at
org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:1089)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
        at
org.eclipse.ui.internal.progress.ProgressManager.runInUI(ProgressManager.java:1085)
        at
org.eclipse.jdt.ui.actions.SortMembersAction.run(SortMembersAction.java:222)
        at
org.eclipse.jdt.ui.actions.SortMembersAction.run(SortMembersAction.java:179)
        at
org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:226)
        at
org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:198)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
        at
org.eclipse.ui.actions.RetargetAction.runWithEvent(RetargetAction.java:216)
        at
org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:228)
        at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:538)
        at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
        at
org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:842)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2921)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2554)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1601)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1565)
        at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:315)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
        at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:230)
        at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:371)
        at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
        at java.lang.reflect.Method.invoke(Method.java:391)
        at org.eclipse.core.launcher.Main.invokeFramework(Main.java:330)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:274)
        at org.eclipse.core.launcher.Main.run(Main.java:977)
        at org.eclipse.core.launcher.Main.main(Main.java:952)
java.lang.NullPointerException
Comment 1 Dirk Baeumer CLA 2005-05-17 04:48:15 EDT
Martin, pass to Tobias if he is the man to look at.
Comment 2 Martin Aeschlimann CLA 2005-05-17 04:53:53 EDT
bug is in jdt.core: CompilationUnitSorter specifies that all body declaration
that are passed in have a property 'RELATIVE_ORDER'
Comment 3 Olivier Thomann CLA 2005-05-17 11:22:10 EDT
Fixed and released in HEAD.
Regression test added in
org.eclipse.jdt.core.tests.model.SortCompilationUnitElementsTests.test026
Comment 4 Olivier Thomann CLA 2005-05-25 10:24:57 EDT
*** Bug 96583 has been marked as a duplicate of this bug. ***
Comment 5 Frederic Fusier CLA 2005-05-27 06:47:40 EDT
Verified for 3.1 RC1 with build I20050527-0010.