Re: Is anyone working on Groovy language support at the moment? Asking because I'm looking at things, and don't want to collide and throw away each others time.

Sven Reimers <[email protected]> Sat, 24 Sep 2016 05:04:41 -0700
Newsgroups gmane.comp.java.netbeans.devel
Message-ID <CAP+Jvx5iSP4XYRdwP+1CNLdqDaZGUFWDwsET9mjR01BGqOYMcg@mail.gmail.com>
Hi guys,

I already made some progress enhancing code completion and a first hook for
mime-type based code completion extension (using gradle files as poc)

Bonus: Initial support for traits (i.e. traits not making IDE unusable)

More news once I am back from Java One.

I assume we can start committing changes  (after release branch creation?)

Will make handling the different things more easy for me

Sven

Am 07.09.2016 05:23 schrieb "Wade Chandler" <[email protected]>:

> I have it running nicely locally. I haven't tested on Windows yet though.
> Too, I noticed there are no tests in the support module; at all. I am
> adding some only for what I am touching. Too, I will need to make
> isTestClass work better. At the moment I believe it would be enabled for
> any Groovy file, but honestly it is better than not having the option at
> all, and at worst case things will fail as expected of one tries to test a
> class or method that is not a test. Not much different than the "run" file
> which is enabled for a file with nothing "runnable". So, I may submit this
> before making that work better, and then iterate.
>
> I wonder if this could be back ported to 8.1 or at least make a quick fix
> for the 8.2 release. It is a pain using Groovy for testing in NB without
> run single.
>
> Wade
>
> On Sep 5, 2016 2:15 PM, "Wade Chandler" <[email protected]> wrote:
>
> Sounds good Bruno. I’m in the middle of it, so once I done I will post an
> issue (or find one), and attach the patch, or look for a repo in which to
> create a branch to request a merge.
>
> Thanks
>
> Wade
>
>
> ===================
>
> Wade Chandler
> e: [email protected]
>
>
>
> On Sep 5, 2016, at 13:26, Bruno Flavio <[email protected]> wrote:
>
> Hello Wade,
>
> I'm currently the community member maintaining Groovy/Grails support.
>
> Sven Reimers and Martin Klähn recently got in touch to improve the
> NetBeans Groovy code completion for Groovy based DSL's. A wiki page has
> been setup by Sven which gives us an overview of the issues and options
> regarding their resolution:
>
> http://wiki.netbeans.org/MakeGroovyInNetBeansGreatAgain
>
> I'm working to add extension points that allow an faster support of newer
> Grails versions and that will eventually allows NetBeans to support a
> Grails version per project (currently only one version can be used at a
> time within the IDE).
>
> Thus it would be great to have your help and the POC would be greatly
> appreciated (using reflection in order to access the necessary groovy
> classes) Let me know what I could do to ease the development. I can
> test/apply patches or give access to a Jenkins instance configured to test
> a patch against core-main or main-silver and run the Groovy/Grails related
> test suites.
>
> Feel free to edit the aforementioned wiki page and/or update the relevant
> issues (#212829 ?). Also I don't see a reason not to update the source to
> 1.8 whenever necessary.
>
> Thank you for looking into this. Keep in touch :)
>
> Best regards,
> Bruno Flávio.
>
> On Sun, 4 Sep 2016 at 16:37 Wade Chandler <[email protected]>
> wrote:
>
>> Also,
>>
>> Any objections to bumping the Java version in NB projects
>> project.properties to 1.8 considering we need 1.8 to build as it is? i.e.
>> is it OK to use Java 1.8 syntax in NB projects (such as Streams and Lambdas
>> where possible). I noticed some already do this, and others are still at
>> source 1.6. If no to a blanket “if you touch a project, update the source
>> to 1.8”, then what about just the Groovy projects for now?
>>
>> Thanks,
>>
>> Wade
>>
>>
>> ===================
>>
>> Wade Chandler
>> e: [email protected]
>>
>>
>>
>> On Sep 4, 2016, at 11:19, Wade Chandler <[email protected]> wrote:
>>
>> I previously sent this from the wrong address...
>>
>> All,
>>
>> After a long time without proper Groovy support for some important
>> features in the IDE, I have bit the bullet, and started digging in. The
>> first priorities for me are “Run Focused Test Method” and “Debug Focused
>> Test Method”.
>>
>> I see that someone started in the past, but the code there is in 1 of 2
>> states: 1) partially to mostly there and incorrect in places or 2)
>> completely wrong. Also, I’m noticing the project DAG with relation to
>> “Groovy Support” and “Groovy Editor”, while correct for some things, is not
>> what we need to be able to discover the selected method and name from the
>> Groovy source code considering to do this we need to be able to access the
>> GroovyParser and GroovyParserResult in the “Groovy Support” module to
>> correlate the cursor position to the selected or surrounding method name
>> and class.
>>
>> I know this as I have changed up org.netbeans.modules.groovy
>> .support.actions.TestMethodUtil and org.netbeans.modules.gsf.t
>> estrunner.ui.TestMethodRunnerAction enough to attempt to run a selected
>> method, and see what happens in the code. I changed TestMethodUtil enough
>> not to error out and allow it to get all the way down to incorrectly
>> looking for a JavaSource instance in the Document; which it never finds. It
>> is using JavaSource where it really needs Source and GroovyParserResult
>> plus the Groovy classes ModuleNode and ASTNode; i.e. we are parsing Groovy
>> code not Java.
>>
>> This from code in TestMethodUtil doing this:
>>             JavaSource js = JavaSource.forDocument(doc);
>>             GroovyTestClassInfoTask task = new
>> GroovyTestClassInfoTask(cursor);
>>             try {
>>                 if (js != null) {
>>                     Future<Void> f = js.runWhenScanFinished(task, true);
>>                     if (f.isDone() && task.getFileObject() != null &&
>> task.getMethodName() != null){
>>                         sm = new SingleMethod(task.getFileObject(),
>> task.getMethodName());
>>                     }
>>                 }
>>             } catch (IOException ex) {
>>                 LOGGER.log(Level.WARNING, null, ex);
>>             }
>>
>> and then GroovyTestClassInfoTask really needs to be oriented to the
>> Groovy AST.
>>
>> Once you discover this, you realize you don’t have access to those
>> classes, that Groovy Editor depends on Groovy Support, and thus Groovy
>> Support can not depend on Groovy Editor (cyclical dependencies), and too,
>> there is a bit more to write. I also noticed that org.netbeans.modules.gsf.
>> testrunner.ui.TestMethodRunnerAction is slightly problematic as it is
>> generic code, but action registration is its Achilles hill. To get it to
>> work for both Java and Groovy, one needs to add an
>> extra @ActionReference(path = "Editors/text/x-groovy/Popup",
>> position=1795)} … 1795 definitely needs adjusted as I’m just getting the
>> workings down.
>>
>> I have thought about using reflection for the near term to access the
>> GroovyParserResult which is returned from code similar to this:
>>                 ParserManager.parseWhenScanFinished(Collections.<Source>singleton(s),
>> new UserTask() {
>>                     @Override
>>                     public void run(ResultIterator rit) throws Exception {
>>                         Result r = rit.getParserResult();
>>                         if("GroovyParserResult".equals
>> (r.getClass().getSimpleName())) {
>>                             //do things here as it will be with the
>> correct code
>>                             //and use reflection to get the Groovy
>> ModuleNode instance
>>                             //and hand off to a new
>> GroovyTestClassInfoTask like utility
>>                         }
>>                     }
>>
>>                 });
>>
>> I think I can get a POC together that will basically only require changes
>> to:
>> * org.netbeans.modules.gsf.testrunner.ui.TestMethodRunnerAction
>> (annotation additions unless there is some other way to inject this), but
>> now that I’m writing this I do see org.netbeans.modules.groov
>> y.support.actions.TestMethodAction which isn’t halfway baked. So, this
>> may be TestMethodAction completion or an extra annotation on
>> TestMethodRunnerAction; TestMethodRunnerAction works as expected ATM.
>>
>> * org.netbeans.modules.groovy.support.actions.TestMethodUtil
>>
>> * org.netbeans.modules.groovy.support.actions.GroovyTestClassInfoTask
>> (essentially making it extends UserTask instead
>> of CancellableTask<CompilationController>)
>>
>> * “Groovy Support” projects meta-data “project.xml”, to add the
>> dependency on the Groovy binaries
>>
>> Anyways, that would be to get it there, as that is the worst thing not
>> having in the Groovy editor during my day to day work when testing code.
>> There are other low hanging fruit related to actions and parsing that might
>> be able to be fixed with everything in the structure it is in currently,
>> and though using reflection doesn’t “feel right”, it may be the best thing
>> to do in the mean time with a TODO being added to break out and fix later,
>> after all dependencies and the overall graph can be better understood, plus
>> some tests to verify if code is ever changed which makes it broken. When I
>> start looking into “Refactoring” then perhaps the picture gets worse; I
>> don’t know. But, at that time, then I would worry further. Does that sound
>> workable or something that could get accepted?
>>
>> I am working locally off main-golden, so any patch I submit will be in
>> that context.
>>
>> Many thanks,
>>
>> Wade
>>
>> ===================
>>
>> Wade Chandler
>> e: [email protected]
>>
>>
>>
>>
>> ===================
>>
>> Wade Chandler
>> e: [email protected]
>>
>>
>>
>>
>>
>
>
>
>
> ===================
>
> Wade Chandler
> e: [email protected]
>
>
>
>
>