<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0051)https://bugs.eclipse.org/bugs/show_bug.cgi?id=76146 -->
<!-- 1.0@bugzilla.org --><!-- 1.0@bugzilla.org --><HTML><HEAD><TITLE>Bug 76146 - NPE using quickfix in Aspect opened with java editor</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1"><LINK 
href="show_bug.cgi?id=36310" rel=Next><LINK href="show_bug.cgi?id=76101" 
rel=Last><LINK href="buglist.cgi?regetlastlist=1" rel=Up><LINK 
href="buglist.cgi?regetlastlist=1" rel=Contents>
<META content="MSHTML 6.00.2800.1476" name=GENERATOR></HEAD>
<BODY text=#000000 vLink=#551a8b aLink=#ff0000 link=#0000ee bgColor=#ffffff 
onload=""><!-- 1.0@bugzilla.org -->
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD width="100%">
      <TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#006699 
        border=0><TBODY>
        <TR>
          <TD width=116 bgColor=#000000><IMG height=50 
            src="76146_files/EclipseBannerPic.jpg" width=115></TD>
          <TD width=637><A href="http://www.eclipse.org/"><IMG height=50 
            src="76146_files/gradient.jpg" width=282 border=0></A></TD>
          <TD width=250><IMG height=48 src="76146_files/eproject-simple.gif" 
            width=250></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 border=0>
  <TBODY>
  <TR>
    <TD vAlign=top align=left>
      <TABLE cellSpacing=2 cellPadding=0 border=0>
        <TBODY>
        <TR>
          <TD vAlign=top noWrap align=left><FONT size=+1><B>Bugzilla Bug 
            76146</B></FONT> </TD></TR></TBODY></TABLE></TD>
    <TD vAlign=center>&nbsp;</TD>
    <TD vAlign=center align=left>NPE using quickfix in Aspect opened with java 
      editor</TD></TR></TBODY></TABLE><!-- 1.0@bugzilla.org --><B>Bug List:</B> <A 
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36310">First</A> <A 
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76101">Last</A> (This bug is 
not in your list) &nbsp;&nbsp;<A 
href="https://bugs.eclipse.org/bugs/buglist.cgi?regetlastlist=1">Show list</A> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A 
href="https://bugs.eclipse.org/bugs/query.cgi">Query page</A> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A 
href="https://bugs.eclipse.org/bugs/enter_bug.cgi">Enter new bug</A> 
<HR>

<FORM name=changeform action=process_bug.cgi method=post><INPUT type=hidden 
value=20041013045125 name=delta_ts> <INPUT type=hidden value=1 
name=longdesclength> <INPUT type=hidden value=76146 name=id> 
<TABLE cellSpacing=1 cellPadding=1 border=0>
  <TBODY>
  <TR>
    <TD align=right><B>Bug#:</B> </TD>
    <TD><A 
      href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76146">76146</A> </TD>
    <TD>&nbsp;</TD>
    <TD align=right><B>Platform:</B> </TD>
    <TD><SELECT name=rep_platform> <OPTION value=All>All</OPTION> <OPTION 
        value=Macintosh>Macintosh</OPTION> <OPTION value=PC selected>PC</OPTION> 
        <OPTION value="Power PC">Power PC</OPTION> <OPTION 
        value=Sun>Sun</OPTION> <OPTION value=Other>Other</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD>
    <TD align=right><B>Reporter:</B> </TD>
    <TD>hawkinsh@uk.ibm.com (Helen Hawkins) </TD></TR>
  <TR>
    <TD align=right><B>Product:</B> </TD>
    <TD><SELECT name=product> <OPTION value=AJDT selected>AJDT</OPTION> 
        <OPTION value=AspectJ>AspectJ</OPTION> <OPTION value=Birt>Birt</OPTION> 
        <OPTION value=CDT>CDT</OPTION> <OPTION value=CME>CME</OPTION> <OPTION 
        value=Community>Community</OPTION> <OPTION value=ECESIS>ECESIS</OPTION> 
        <OPTION value=ECF>ECF</OPTION> <OPTION value=EMF>EMF</OPTION> <OPTION 
        value=Equinox>Equinox</OPTION> <OPTION value=ERCP>ERCP</OPTION> <OPTION 
        value=GEF>GEF</OPTION> <OPTION value=GMT>GMT</OPTION> <OPTION 
        value=Hyades>Hyades</OPTION> <OPTION value=JDT>JDT</OPTION> <OPTION 
        value=OMELET>OMELET</OPTION> <OPTION value=PDE>PDE</OPTION> <OPTION 
        value=Platform>Platform</OPTION> <OPTION 
        value=Pollinate>Pollinate</OPTION> <OPTION 
        value=Stellation>Stellation</OPTION> <OPTION value=UML2>UML2</OPTION> 
        <OPTION value=VE>VE</OPTION> <OPTION value="Web Tools">Web 
        Tools</OPTION> <OPTION value=WSVT>WSVT</OPTION> <OPTION 
        value=XSD>XSD</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD>
    <TD align=right><B>OS:</B> </TD>
    <TD><SELECT name=op_sys> <OPTION value=All>All</OPTION> <OPTION 
        value="AIX Motif">AIX Motif</OPTION> <OPTION value="Windows 95">Windows 
        95</OPTION> <OPTION value="Windows 98">Windows 98</OPTION> <OPTION 
        value="Windows CE">Windows CE</OPTION> <OPTION 
        value="Windows ME">Windows ME</OPTION> <OPTION 
        value="Windows 2000">Windows 2000</OPTION> <OPTION 
        value="Windows NT">Windows NT</OPTION> <OPTION value="Windows XP" 
        selected>Windows XP</OPTION> <OPTION value="Windows All">Windows 
        All</OPTION> <OPTION value="MacOS X">MacOS X</OPTION> <OPTION 
        value=Linux>Linux</OPTION> <OPTION value=Linux-GTK>Linux-GTK</OPTION> 
        <OPTION value=Linux-Motif>Linux-Motif</OPTION> <OPTION 
        value=HP-UX>HP-UX</OPTION> <OPTION value=Neutrino>Neutrino</OPTION> 
        <OPTION value=QNX-Photon>QNX-Photon</OPTION> <OPTION 
        value=Solaris>Solaris</OPTION> <OPTION 
        value=Solaris-GTK>Solaris-GTK</OPTION> <OPTION 
        value=Solaris-Motif>Solaris-Motif</OPTION> <OPTION value="Unix All">Unix 
        All</OPTION> <OPTION value=other>other</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD>
    <TD align=right><B>Add&nbsp;CC:</B> </TD>
    <TD><INPUT size=30 name=newcc> </TD></TR>
  <TR>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/describecomponents.cgi?product=AJDT">Component</A>: 
      </B></TD>
    <TD><SELECT name=component> <OPTION value=Core>Core</OPTION> <OPTION 
        value=Doc>Doc</OPTION> <OPTION value=UI selected>UI</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD>
    <TD align=right><B>Version:</B> </TD>
    <TD><SELECT name=version> <OPTION value=1.1.11>1.1.11</OPTION> <OPTION 
        value=1.1.12 selected>1.1.12</OPTION> <OPTION value=1.1.3>1.1.3</OPTION> 
        <OPTION value=1.1.4>1.1.4</OPTION> <OPTION value=1.1.7>1.1.7</OPTION> 
        <OPTION value=1.2.0>1.2.0</OPTION> <OPTION value="1.2.0 M1">1.2.0 
        M1</OPTION> <OPTION value=unspecified>unspecified</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD>
    <TD vAlign=top align=right rowSpan=4><B>CC:</B> </TD>
    <TD vAlign=top rowSpan=4><INPUT type=hidden name=cc> </TD></TR>
  <TR>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/bug_status.html">Status</A>: </B></TD>
    <TD>NEW</TD>
    <TD>&nbsp;</TD>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/bug_status.html#priority">Priority</A>:</B> 
    </TD>
    <TD><SELECT name=priority> <OPTION value=P1>P1</OPTION> <OPTION 
        value=P2>P2</OPTION> <OPTION value=P3 selected>P3</OPTION> <OPTION 
        value=P4>P4</OPTION> <OPTION value=P5>P5</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD></TR>
  <TR>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/bug_status.html">Resolution</A>: 
    </B></TD>
    <TD></TD>
    <TD>&nbsp;</TD>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/bug_status.html#severity">Severity</A>:</B> 
    </TD>
    <TD><SELECT name=bug_severity> <OPTION value=blocker>blocker</OPTION> 
        <OPTION value=critical>critical</OPTION> <OPTION 
        value=major>major</OPTION> <OPTION value=normal selected>normal</OPTION> 
        <OPTION value=minor>minor</OPTION> <OPTION 
        value=trivial>trivial</OPTION> <OPTION 
        value=enhancement>enhancement</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD></TR>
  <TR>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/bug_status.html#assigned_to">Assigned&nbsp;To</A>: 
      </B></TD>
    <TD>mchapman@uk.ibm.com (Matt Chapman)</TD>
    <TD>&nbsp;</TD>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/notargetmilestone.html">Target 
      Milestone</A>: </B></TD>
    <TD><SELECT name=target_milestone> <OPTION value=--- 
        selected>---</OPTION> <OPTION value=1.1.12>1.1.12</OPTION> <OPTION 
        value=1.1.13>1.1.13</OPTION> <OPTION value=1.1.3>1.1.3</OPTION> <OPTION 
        value=1.1.4>1.1.4</OPTION> <OPTION value=1.2.0>1.2.0</OPTION> <OPTION 
        value="1.2.0 M1">1.2.0 M1</OPTION> <OPTION value="1.2.0 M2">1.2.0 
        M2</OPTION></SELECT> </TD>
    <TD>&nbsp;</TD></TR>
  <TR>
    <TD align=right><B>URL: </B></TD>
    <TD colSpan=7><INPUT size=60 name=bug_file_loc> </TD></TR>
  <TR>
    <TD align=right><B>Summary:</B> </TD>
    <TD colSpan=7><INPUT size=60 
      value="NPE using quickfix in Aspect opened with java editor" 
      name=short_desc> </TD></TR>
  <TR>
    <TD align=right><B><A 
      href="https://bugs.eclipse.org/bugs/describekeywords.cgi">Keywords</A>: 
      </B>
    <TD colSpan=7><INPUT size=60 name=keywords> </TD></TR></TBODY></TABLE><!-- 1.0@bugzilla.org --><BR>
<TABLE cellSpacing=0 cellPadding=4 border=1>
  <TBODY>
  <TR>
    <TH align=left bgColor=#cccccc>Attachment</TH>
    <TH align=left bgColor=#cccccc>Type</TH>
    <TH align=left bgColor=#cccccc>Modified</TH>
    <TH align=left bgColor=#cccccc>Status</TH>
    <TH align=left bgColor=#cccccc>Actions</TH></TR>
  <TR>
    <TD colSpan=4><A 
      href="https://bugs.eclipse.org/bugs/attachment.cgi?bugid=76146&amp;action=enter">Create 
      a New Attachment</A> (proposed patch, testcase, etc.) </TD>
    <TD><A 
      href="https://bugs.eclipse.org/bugs/attachment.cgi?bugid=76146&amp;action=viewall">View 
      All</A> </TD></TR></TBODY></TABLE><BR>
<TABLE>
  <TBODY>
  <TR>
    <TH align=right>Bug 76146 depends on:</TH>
    <TD></TD>
    <TD><INPUT name=dependson> </TD>
    <TD rowSpan=2><A 
      href="https://bugs.eclipse.org/bugs/showdependencytree.cgi?id=76146">Show 
      dependency tree</A> </TD></TR>
  <TR>
    <TH align=right>Bug 76146 blocks:</TH>
    <TD></TD>
    <TD><INPUT name=blocked> </TD></TR></TBODY></TABLE><BR><B>Additional 
Comments:</B> <BR><TEXTAREA accessKey=c name=comment rows=10 wrap=hard cols=80></TEXTAREA> 
<BR><BR><INPUT type=radio CHECKED value=none name=knob> Leave as 
<B>NEW&nbsp;</B> <BR><INPUT type=radio value=accept name=knob> Accept bug 
(change status to <B>ASSIGNED</B>) <BR><INPUT type=radio value=resolve 
name=knob> Resolve bug, changing <A 
href="https://bugs.eclipse.org/bugs/bug_status.html">resolution</A> to <SELECT 
onchange=document.changeform.knob[2].checked=true name=resolution> <OPTION 
  value=FIXED selected>FIXED</OPTION> <OPTION value=INVALID>INVALID</OPTION> 
  <OPTION value=WONTFIX>WONTFIX</OPTION> <OPTION value=LATER>LATER</OPTION> 
  <OPTION value=REMIND>REMIND</OPTION> <OPTION 
  value=WORKSFORME>WORKSFORME</OPTION></SELECT> <BR><INPUT type=radio 
value=duplicate name=knob> Resolve bug, mark it as duplicate of bug # <INPUT 
onchange="if (this.value != '')&#10;                       {document.changeform.knob[3].checked=true}" 
size=6 name=dup_id> <BR><INPUT type=radio value=reassign name=knob> <A 
href="https://bugs.eclipse.org/bugs/bug_status.html#assigned_to">Reassign</A> 
bug to <INPUT 
onchange="if ((this.value != 'mchapman@uk.ibm.com') &amp;&amp; &#10;                            (this.value != '')) {&#10;                         document.changeform.knob[4].checked=true; &#10;                       }" 
size=32 value=mchapman@uk.ibm.com name=assigned_to> <BR><INPUT type=radio 
value=reassignbycomponent name=knob> Reassign bug to owner of selected component 
<BR><INPUT type=submit value=Commit> <INPUT type=hidden value=process_bug 
name=form_name> 
<P><FONT size=+1><B><A 
href="https://bugs.eclipse.org/bugs/show_activity.cgi?id=76146">View Bug 
Activity</A> &nbsp; | &nbsp; <A 
href="https://bugs.eclipse.org/bugs/long_list.cgi?buglist=76146">Format For 
Printing</A> </B></FONT></P></FORM>
<TABLE>
  <TBODY>
  <TR>
    <TD align=left><B><A 
      href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76146#c0" 
      name=c0>Description</A>: </B></TD>
    <TD align=right width="100%">Opened: 2004-10-13 04:51 </TD></TR></TBODY></TABLE>
<HR>
<!-- 1.0@bugzilla.org --><PRE>To recreate:

- Check out the QuickFix project from ajdt.test project
- Open TestAspect.java in the Java Editor (right click &gt; open with &gt; Java 
Editor)
- Click on the lightbulb with the error marker (the same line as File f = new 
File("tmp");
- An Internal Error appear in the Error log with the following stack trace:



java.lang.NullPointerException
at 
org.eclipse.jdt.internal.ui.text.correction.UnresolvedElementsSubProcessor.getT
ypeProposals(UnresolvedElementsSubProcessor.java:395)
at org.eclipse.jdt.internal.ui.text.correction.QuickFixProcessor.process
(QuickFixProcessor.java:270)
at org.eclipse.jdt.internal.ui.text.correction.QuickFixProcessor.getCorrections
(QuickFixProcessor.java:202)
at 
org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor.collectCorr
ections(JavaCorrectionProcessor.java:240)
at 
org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor.processAnno
tations(JavaCorrectionProcessor.java:208)
at 
org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor.computeComp
letionProposals(JavaCorrectionProcessor.java:177)
at 
org.eclipse.jface.text.contentassist.ContentAssistant.computeCompletionProposal
s(ContentAssistant.java:1472)
at 
org.eclipse.jface.text.contentassist.CompletionProposalPopup.computeProposals
(CompletionProposalPopup.java:242)
at org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$7
(CompletionProposalPopup.java:238)
at org.eclipse.jface.text.contentassist.CompletionProposalPopup$1.run
(CompletionProposalPopup.java:197)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
at org.eclipse.jface.text.contentassist.CompletionProposalPopup.showProposals
(CompletionProposalPopup.java:192)
at 
org.eclipse.jface.text.contentassist.ContentAssistant.showPossibleCompletions
(ContentAssistant.java:1320)
at 
org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionAssistant.showPossibl
eCompletions(JavaCorrectionAssistant.java:159)
at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewe
r.doOperation(CompilationUnitEditor.java:184)
at org.eclipse.jdt.internal.ui.javaeditor.JavaSelectAnnotationRulerAction.run
(JavaSelectAnnotationRulerAction.java:78)
at org.eclipse.ui.texteditor.AbstractRulerActionDelegate.run
(AbstractRulerActionDelegate.java:99)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:276)
at org.eclipse.ui.internal.PluginAction.run(PluginAction.java:238)
at org.eclipse.ui.texteditor.AbstractTextEditor$11.triggerAction
(AbstractTextEditor.java:2110)
at org.eclipse.ui.texteditor.AbstractTextEditor$11.mouseUp
(AbstractTextEditor.java:2117)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:136)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2772)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2431)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1377)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1348)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:254)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run
(PlatformActivator.java:335)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.eclipse.core.launcher.Main.basicRun(Main.java:183)
at org.eclipse.core.launcher.Main.run(Main.java:644)
at org.eclipse.core.launcher.Main.main(Main.java:628)


Looking at the jdt code in UnresolvedElementsSubProcessor.java, at line 395, 
the parent field is null:

	ASTNode parent= selectedNode.getParent();
	while (parent.getLength() == selectedNode.getLength()) { // line 395
			parent= parent.getParent(); 
	}

There just needs to be a null check as there is above:


	ASTNode selectedNode= problem.getCoveringNode(context.getASTRoot());
	if (selectedNode == null) {
		return;
	}
	int kind= SimilarElementsRequestor.ALL_TYPES;
		
	ASTNode parent= selectedNode.getParent();
	while (parent.getLength() == selectedNode.getLength()) { 	
		parent= parent.getParent(); 
	}

should become:


	ASTNode selectedNode= problem.getCoveringNode(context.getASTRoot());
	if (selectedNode == null) {
		return;
	}
	int kind= SimilarElementsRequestor.ALL_TYPES;
		
	ASTNode parent= selectedNode.getParent();
	if (parent == null) {
		return;
	}
	while (parent.getLength() == selectedNode.getLength()) { 	
		parent= parent.getParent(); 
	}


This needs to be raised as a jdt bug, since we don't pass through any ajdt 
code in order to get here.

Raising this bug against ajdt is just for tracking.

(note this happens on 1.1.12, but also on the latest AJDT dev build).</PRE>
<HR>
<!-- 1.0@bugzilla.org --><B>Bug List:</B> <A 
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36310">First</A> <A 
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76101">Last</A> (This bug is 
not in your list) &nbsp;&nbsp;<A 
href="https://bugs.eclipse.org/bugs/buglist.cgi?regetlastlist=1">Show list</A> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A 
href="https://bugs.eclipse.org/bugs/query.cgi">Query page</A> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A 
href="https://bugs.eclipse.org/bugs/enter_bug.cgi">Enter new bug</A> <BR><!-- 1.0@bugzilla.org -->
<TABLE border=0>
  <TBODY>
  <TR>
    <TD vAlign=top bgColor=#000000>
      <TABLE cellSpacing=0 cellPadding=10 width="100%" bgColor=lightyellow 
      border=0>
        <TBODY>
        <TR>
          <TD>This is <B>Bugzilla</B>: the Mozilla bug system. For more 
            information about what Bugzilla is and what it can do, see <A 
            href="http://www.bugzilla.org/">bugzilla.org</A>. <BR><!-- 1.0@bugzilla.org -->
            <FORM action=show_bug.cgi method=get>
            <TABLE width="100%">
              <TBODY>
              <TR>
                <TD>Actions: </TD>
                <TD vAlign=center noWrap><A 
                  href="https://bugs.eclipse.org/bugs/enter_bug.cgi">New</A> | 
                  <A href="https://bugs.eclipse.org/bugs/query.cgi">Query</A> | <INPUT type=submit value=Find> bug # <INPUT size=6 name=id> | 
                  <A 
                  href="https://bugs.eclipse.org/bugs/reports.cgi">Reports</A> 
                </TD>
                <TD>&nbsp;</TD>
                <TD vAlign=center align=right><A 
                  href="https://bugs.eclipse.org/bugs/createaccount.cgi">New&nbsp;Account</A> 
                  | <A 
                  href="https://bugs.eclipse.org/bugs/query.cgi?GoAheadAndLogIn=1">Log&nbsp;In</A> 
                </TD></TR></TBODY></TABLE></FORM></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></BODY></HTML>
