« Return to Thread: State of the AspectJ/Java editor?

Re: State of the AspectJ/Java editor?

by Dave Whittaker :: Rate this Message:

Reply to Author | View in Thread

Andrew,

Just wanted to confirm: I'm up on the latest dev build as of today and  
the problem appears to be fixed. Thanks.

Dave

On Jul 8, 2009, at 10:54 PM, Andrew Eisenberg wrote:

> Bug report:
> http://bugs.eclipse.org/282948
>
> I was able to reduce your problem to a very small snippet of code.
>
> I have been doing most of my development on AJDT targeting 3.5 now.
> So, the fix will be out for that platform first (probably tomorrow).
> If you are working in 3.4, let me know and I will back port sooner
> rather than later.
>
> On Wed, Jul 8, 2009 at 7:45 PM, Andrew  
> Eisenberg<andrew@...> wrote:
>> Thanks for the screenshot, Dave.  I'm able to reproduce.  I'm  
>> thinking
>> it's a problem with AJDT's use of the parser.
>>
>> I'll raise a bug for it.
>>
>> On Wed, Jul 8, 2009 at 5:11 PM, Andrew  
>> Eisenberg<andrew@...> wrote:
>>> I haven't tested this out, but I have a sneaking suspicion that the
>>> "execution(public" is a problem here.  I know that we've had  
>>> problems
>>> with that combination before.  I'll try it out tonight to see if I  
>>> can
>>> reproduce.
>>>
>>> On Wed, Jul 8, 2009 at 3:54 PM, Andy Clement<andrew.clement@...
>>> > wrote:
>>>> Either AJDT passed in an odd signature with a rogue extra ';' or  
>>>> AspectJ
>>>> failed to chew on a valid signature correctly.  It'd be great to  
>>>> know what
>>>> AJWorldFacade.java:122 passed in...
>>>>
>>>> You should raise a bug for this.
>>>>
>>>> Andy.
>>>>
>>>> 2009/7/8 Dave Whittaker <dave@...>
>>>>>
>>>>> Thanks Andrew.  That helps me get a bit of a handle on where  
>>>>> things stand.
>>>>>  I guess the most baffling one for me right now is an aspect I  
>>>>> have that
>>>>> does involve an ITD, but doesn't involve generics.   Here is a  
>>>>> screen shot
>>>>> of what it looks like:
>>>>>
>>>>> http://files.getdropbox.com/u/1242708/screenshot.png
>>>>>
>>>>> The file compiles and the pointcut matches correctly , but the  
>>>>> AspectJ
>>>>> editor still insists that there are issues.  I am getting some  
>>>>> AJ related
>>>>> messages in the log, which I'll include below.  Any ideas?
>>>>>
>>>>> org.aspectj.weaver.BCException: Bad type signature: ;
>>>>>
>>>>>        at
>>>>> org
>>>>> .aspectj
>>>>> .weaver.UnresolvedType.signatureToName(UnresolvedType.java:711)
>>>>>        at
>>>>> org
>>>>> .aspectj
>>>>> .weaver.UnresolvedType.signatureToName(UnresolvedType.java:678)
>>>>>        at
>>>>> org.aspectj.weaver.UnresolvedType.getName(UnresolvedType.java:457)
>>>>>        at
>>>>> org
>>>>> .aspectj.weaver.bcel.ClassPathManager.find(ClassPathManager.java:
>>>>> 97)
>>>>>        at
>>>>> org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:
>>>>> 391)
>>>>>        at
>>>>> org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:
>>>>> 362)
>>>>>        at  
>>>>> org.aspectj.weaver.World.resolveToReferenceType(World.java:384)
>>>>>        at org.aspectj.weaver.World.resolve(World.java:278)
>>>>>        at org.aspectj.weaver.World.getCoreType(World.java:502)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ajdt
>>>>> .core.model.AJWorldFacade.findITDInfoIfExists(AJWorldFacade.java:
>>>>> 122)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ajdt
>>>>> .internal
>>>>> .core
>>>>> .contentassist.ProposalRequestorWrapper.shouldAccept(ProposalRequ
>>>>> estorWrapper.java:86)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ajdt
>>>>> .internal
>>>>> .core
>>>>> .contentassist.ProposalRequestorWrapper.accept(ProposalRequestorW
>>>>> rapper.java:68)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .codeassist
>>>>> .CompletionEngine.findLocalMethods(CompletionEngine.java:835
>>>>> 4)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .codeassist.CompletionEngine.findMethods(CompletionEngine.java:
>>>>> 9632)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .codeassist.CompletionEngine.findMembers(CompletionEngine.java:
>>>>> 8951)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .codeassist
>>>>> .CompletionEngine.completionOnQualifiedNameReference(Complet
>>>>> ionEngine.java:3014)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .codeassist.CompletionEngine.complete(CompletionEngine.java:1642)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .codeassist.CompletionEngine.complete(CompletionEngine.java:1862)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ajdt
>>>>> .core
>>>>> .javaelements
>>>>> .AJCompilationUnit.internalCodeComplete(AJCompilationUnit.jav
>>>>> a:688)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ajdt
>>>>> .core
>>>>> .javaelements
>>>>> .AJCompilationUnit.codeComplete(AJCompilationUnit.java:637)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal.core.CompilationUnit.codeComplete(CompilationUnit.java:
>>>>> 355)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal.core.CompilationUnit.codeComplete(CompilationUnit.java:
>>>>> 343)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .ui
>>>>> .text
>>>>> .java.JavaCompletionProposalComputer.internalComputeCompletionP
>>>>> roposals(JavaCompletionProposalComputer.java:242)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .ui
>>>>> .text
>>>>> .java.JavaCompletionProposalComputer.computeCompletionProposals
>>>>> (JavaCompletionProposalComputer.java:204)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .mylyn
>>>>> .internal
>>>>> .java
>>>>> .ui.editor.FocusedJavaAllProposalComputer.computeCompletionPropo
>>>>> sals(FocusedJavaAllProposalComputer.java:72)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .ui
>>>>> .text
>>>>> .java.CompletionProposalComputerDescriptor.computeCompletionPro
>>>>> posals(CompletionProposalComputerDescriptor.java:316)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .ui
>>>>> .text
>>>>> .java.CompletionProposalCategory.computeCompletionProposals(Com
>>>>> pletionProposalCategory.java:264)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .ui
>>>>> .text
>>>>> .java.ContentAssistProcessor.collectProposals(ContentAssistProc
>>>>> essor.java:286)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jdt
>>>>> .internal
>>>>> .ui
>>>>> .text
>>>>> .java.ContentAssistProcessor.computeCompletionProposals(Content
>>>>> AssistProcessor.java:246)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jface
>>>>> .text
>>>>> .contentassist
>>>>> .ContentAssistant.computeCompletionProposals(ContentAssista
>>>>> nt.java:1832)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jface
>>>>> .text
>>>>> .contentassist
>>>>> .CompletionProposalPopup.computeProposals(CompletionProposa
>>>>> lPopup.java:556)
>>>>>        at
>>>>> org
>>>>> .eclipse.jface.text.contentassist.CompletionProposalPopup.access
>>>>> $16(CompletionProposalPopup.
>>>>> java:553)
>>>>>        at
>>>>> org.eclipse.jface.text.contentassist.CompletionProposalPopup
>>>>> $2.run(CompletionProposalPopup.java
>>>>> :488)
>>>>>        at
>>>>> org
>>>>> .eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jface
>>>>> .text
>>>>> .contentassist
>>>>> .CompletionProposalPopup.showProposals(CompletionProposalPo
>>>>> pup.java:482)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .jface
>>>>> .text
>>>>> .contentassist
>>>>> .ContentAssistant.showPossibleCompletions(ContentAssistant.
>>>>> java:1660)
>>>>>        at
>>>>> org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor
>>>>> $AdaptedSourceViewer.doOperation(Co
>>>>> mpilationUnitEditor.java:182)
>>>>>        at
>>>>> org.eclipse.ajdt.internal.ui.editor.AspectJEditor
>>>>> $AJTextOperationTarget.doOperation(AspectJEdit
>>>>> or.java:168)
>>>>>        at
>>>>> org.eclipse.ui.texteditor.ContentAssistAction
>>>>> $1.run(ContentAssistAction.java:82)
>>>>>        at
>>>>> org
>>>>> .eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui.texteditor.ContentAssistAction.run(ContentAssistAction.java:
>>>>> 80)
>>>>>        at  
>>>>> org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
>>>>>        at
>>>>> org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:
>>>>> 185)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui
>>>>> .internal
>>>>> .handlers.LegacyHandlerWrapper.execute(LegacyHandlerWrapper.java:
>>>>> 109)
>>>>>        at
>>>>> org.eclipse.core.commands.Command.executeWithChecks(Command.java:
>>>>> 476)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .core
>>>>> .commands
>>>>> .ParameterizedCommand
>>>>> .executeWithChecks(ParameterizedCommand.java:508)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui
>>>>> .internal
>>>>> .handlers.HandlerService.executeCommand(HandlerService.java:169)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui
>>>>> .internal
>>>>> .keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:470)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:
>>>>> 824)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui
>>>>> .internal
>>>>> .keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:
>>>>> 880)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui
>>>>> .internal
>>>>> .keys
>>>>> .WorkbenchKeyboard
>>>>> .filterKeySequenceBindings(WorkbenchKeyboard.java
>>>>> :569)
>>>>>        at
>>>>> org.eclipse.ui.internal.keys.WorkbenchKeyboard.access
>>>>> $3(WorkbenchKeyboard.java:510)
>>>>>        at
>>>>> org.eclipse.ui.internal.keys.WorkbenchKeyboard
>>>>> $KeyDownFilter.handleEvent(WorkbenchKeyboard.java
>>>>> :125)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Display.filterEvent(Display.java:965)
>>>>>        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:
>>>>> 3541)
>>>>>        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:
>>>>> 1247)
>>>>>        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:
>>>>> 1270)
>>>>>        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:
>>>>> 1255)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1284)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1280)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Canvas.sendKeyEvent(Canvas.java:428)
>>>>>        at
>>>>> org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:
>>>>> 906)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Display.windowProc(Display.java:4740)
>>>>>        at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native  
>>>>> Method)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .swt
>>>>> .internal.cocoa.NSResponder.interpretKeyEvents(NSResponder.java:
>>>>> 56)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Composite.keyDown(Composite.java:516)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Display.windowProc(Display.java:4654)
>>>>>        at  
>>>>> org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native
>>>>> Method)
>>>>>        at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:
>>>>> 202)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:1750)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:1821)
>>>>>        at  
>>>>> org.eclipse.swt.widgets.Display.windowProc(Display.java:4712)
>>>>>        at  
>>>>> org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native
>>>>> Method)
>>>>>        at
>>>>> org
>>>>> .eclipse.swt.widgets.Display.applicationSendEvent(Display.java:
>>>>> 4284)
>>>>>        at
>>>>> org.eclipse.swt.widgets.Display.applicationProc(Display.java:4351)
>>>>>        at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native  
>>>>> Method)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:
>>>>> 101)
>>>>>        at
>>>>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3096)
>>>>>        at
>>>>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:
>>>>> 2405)
>>>>>        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:
>>>>> 2369)
>>>>>        at org.eclipse.ui.internal.Workbench.access
>>>>> $4(Workbench.java:2221)
>>>>>        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:
>>>>> 500)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
>>>>>        at
>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:
>>>>> 149)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .ui
>>>>> .internal
>>>>> .ide.application.IDEApplication.start(IDEApplication.java:113)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:
>>>>> 194)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .core
>>>>> .runtime
>>>>> .internal
>>>>> .adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.
>>>>> java:110)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .core
>>>>> .runtime
>>>>> .internal
>>>>> .adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
>>>>>        at
>>>>> org
>>>>> .eclipse
>>>>> .core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
>>>>>        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:585)
>>>>>        at  
>>>>> org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
>>>>>        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:
>>>>> 514)
>>>>>        at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
>>>>> !SUBENTRY 1 org.eclipse.ajdt.core 4 0 2009-07-07 12:02:30.942
>>>>> !MESSAGE
>>>>> org
>>>>> .eclipse
>>>>> .ajdt
>>>>> .core.model.AJWorldFacade.findITDInfoIfExists(AJWorldFacade.java:
>>>>> 123)
>>>>> !SUBENTRY 1 org.eclipse.ajdt.core 1 1 2009-07-07 12:02:30.942
>>>>> !MESSAGE org.eclipse.ajdt.core.model.AJWorldFacade@a358b4
>>>>> !SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942
>>>>> !MESSAGE manager=class
>>>>> org.aspectj.ajdt.internal.core.builder.AjBuildManager@10370600
>>>>> !SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942
>>>>> !MESSAGE world=class org.aspectj.weaver.bcel.BcelWorld@10170238
>>>>> !SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942
>>>>> !MESSAGE cachedMungers=class java.util.HashMap@16713261
>>>>>
>>>>> On Jul 7, 2009, at 5:53 PM, Andrew Eisenberg wrote:
>>>>>
>>>>>> Hi David,
>>>>>>
>>>>>> Our goal is to ensure that spurious AspectJ errors (ie- red  
>>>>>> squiggles
>>>>>> on valid code) are not seen at all (but this has to be weighed  
>>>>>> against
>>>>>> being to aggressive and ignoring actual errors).  We have taken  
>>>>>> care
>>>>>> to ensure that the common uses of AspectJ syntax will not show  
>>>>>> red
>>>>>> squiggles in the editor, but more advanced uses of aspectj  
>>>>>> (such as
>>>>>> generic ITDs, especially those on interfaces) have been less well
>>>>>> tested.
>>>>>>
>>>>>> There is no explicit documentation that describes what is  
>>>>>> working and
>>>>>> what is not, but there are a slew of test cases for this and  
>>>>>> the code
>>>>>> for this is well documented.  At this point, if you are seeing
>>>>>> something in the editor being marked as a problem when the  
>>>>>> compiler
>>>>>> thinks it isn't, please let us know and we will address it as  
>>>>>> soon as
>>>>>> we can.
>>>>>>
>>>>>> For the past little while, we have been waiting to hear from  
>>>>>> users
>>>>>> when they come across some of these spurious errors.  And we  
>>>>>> fix them
>>>>>> as they come in.  The best way to help me debug this is to send  
>>>>>> some
>>>>>> examples of failing code.  You can raise a bug if you like, or  
>>>>>> you can
>>>>>> send it through this mailing list.
>>>>>>
>>>>>> --a
>>>>>>
>>>>>> On Tue, Jul 7, 2009 at 8:53 AM, Dave Whittaker<dave@...>  
>>>>>> wrote:
>>>>>>>
>>>>>>> Andrew, I guess this question would be for you: I know that  
>>>>>>> work has
>>>>>>> been
>>>>>>> done to provide better support for AspectJ inside eclipse  
>>>>>>> editors....
>>>>>>> I'm
>>>>>>> just not sure what should be working at this point and what  
>>>>>>> isn't yet.
>>>>>>>  I
>>>>>>> still get a fair number of red squigglies in classes that ITDs  
>>>>>>> are
>>>>>>> applied
>>>>>>> to, and I've even started to see some of them in pointcuts  
>>>>>>> that are
>>>>>>> viewed
>>>>>>> inside an AspectJ editor.  If any of these shouldn't be  
>>>>>>> showing up, I'd
>>>>>>> like
>>>>>>> to help debug the cause, but I don't want to bug you guys by  
>>>>>>> pointing
>>>>>>> out
>>>>>>> errors that you are already aware of.  Is there a document  
>>>>>>> somewhere
>>>>>>> that
>>>>>>> lists what should be working and what is known to still be  
>>>>>>> broken?  If
>>>>>>> not,
>>>>>>> could you give me a quick rundown?
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> aspectj-users mailing list
>>>>>>> aspectj-users@...
>>>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>>>
>>>>>> _______________________________________________
>>>>>> aspectj-users mailing list
>>>>>> aspectj-users@...
>>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>>
>>>>> _______________________________________________
>>>>> aspectj-users mailing list
>>>>> aspectj-users@...
>>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>
>>>>
>>>> _______________________________________________
>>>> aspectj-users mailing list
>>>> aspectj-users@...
>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>>
>>>>
>>>
>>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@...
> https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@...
https://dev.eclipse.org/mailman/listinfo/aspectj-users

 « Return to Thread: State of the AspectJ/Java editor?