<!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
java.lang.NullPointerException- 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");
java.lang.NullPointerException- 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(); 
	}

java.lang.NullPointerException 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>
