On 13/08/2013, at 2:30 AM, kelemen <attila.keleme...@gmail.com> wrote:

> I don't see how your opinion differs from mine. Actually, I agree with what 
> you wrote. I just stated that as I have seen in the sources of Gradle, things 
> will not work out with the current way. That is, I don't see how it could. 
> Changing how the class loading mechanism works in NetBeans is practically 
> impossible. NetBeans is a platform, not just an IDE and even if it was not, 
> possibly many code out there already relies on its class loading mechanism. 
> Breaking them is not an option, the risk of this change seems extremely high 
> to me. Other that this, I'm prepared to change the way my plugin works, if it 
> makes the Tooling API better but to make fundamental changes in the NetBeans 
> platform is unlikely to happen.

You shouldn't have to make any changes, or at least not until we've done some 
more fixes to the tooling API.

> 
> 
> 2013/8/12 alex.ruiz.05 [via Gradle] <[hidden email]>
> I quite don't see things the same way. The new API provides something really 
> powerful: perform custom logic in Gradle *without* writing plug-ins. The main 
> use case is IDEs and the custom logic resides in the IDE (and can evolve with 
> the IDE without end-users needing to update their build scripts, or plug-in 
> versions, etc.)
> 
> It would be ideal to drop in this new API and have everything work magically. 
> But I don't think this is 100% possible. It is a tough problem. Both sides 
> (client code and Gradle) need to know about each other somehow in order to 
> operate (Adam, please correct if I'm wrong.) Either Gradle knows about the 
> IDE or the IDE knows about Gradle. The IDE already knows about Gradle, after 
> all it has a plug-in already using Gradle APIs. My take is that if this API 
> requires changes in clients (IDEs) it is worth doing them for all the 
> benefits the API provides (unless, of course, Adam has a way to go around 
> this.)
> 
> In the case of IDEA (and Studio), the IntelliJ folks are already working on a 
> way to let us specify the classpath necessary for this new API to work: 
> http://youtrack.jetbrains.com/issue/IDEA-111910 .
> 
> 
> 
> 
> On Mon, Aug 12, 2013 at 6:32 AM, kelemen <[hidden email]> wrote:
> I have debugged into the Tooling API and see what it does to determine the 
> required jar files. Actually, I believe that the problem is not the fault of 
> the IDE. Gradle makes two wrong assumptions:
> 
> 1. URLClassLoader instances are used in the class loader hierarchy. Actually, 
> NetBeans has a different class loader which prevents accessing classes not 
> for the NB module.
> 2. The ClassLoader of the class implementing BuildAction is enough. This is 
> not true because I have to wrap other plugins' actions as well (such as 
> NBAndroid) and they use an unrelated ClassLoader.
> 
> This issue is by far not trivial to solve and I don't know if Gradle can 
> solve this on its own without the client code (e.g.: NB Gradle plugin) 
> telling it where additional jars are located.
> 
> 
> 2013/8/12 alex.ruiz.05 [via Gradle] <[hidden email]>
> Even if this happens in Eclipse, we are not giving Adam enough information to 
> troubleshoot the problem (assuming the problem is in Gradle, which I'm not 
> sure.)
> 
> I'm looking into how IDEA does things, to verify where the problem is and if 
> it possible to do something in IDEA to solve the classpath issue. I will 
> check with the IJ folks (once I understand how IDEA is doing the RMI-less 
> import,) they definitely have a better understanding of classloading in IDEA, 
> and they may find a solution (which may help solve the issue in other IDEs.) 
> 
> 
> On Mon, Aug 12, 2013 at 12:42 AM, kelemen <[hidden email]> wrote:
> I would rather not simply consider this as an Idea bug because the same error 
> is thrown in NetBeans and it would be good to know what would happen in 
> Eclipse too. Also, I would like to test this when I wrap code from another 
> plugin of NetBeans (using another ClassLoader).
> 
> 
> 2013/8/12 alex.ruiz.05 [via Gradle] <[hidden email]>
> 
> Hi Adam,
> 
> I did some testing and, in fact, the problem is in IntelliJ. Long story 
> short: they recently (as in last Friday) removed usage of RMI to import a 
> Gradle project into IDEA (or Studio.) The classpath is not correctly set with 
> RMI off. With RMI on the classpath is properly set, and the new API works. I 
> haven't tested our whole use case, but at least with RMI on, we don't get the 
> 'class not found' exception.
> 
> I'll follow up with the IntelliJ folks.
> 
> Thanks!
> -Alex
> 
> 
> On Mon, Aug 12, 2013 at 12:20 AM, Alex Ruiz <[hidden email]> wrote:
> Hi Adam,
> 
> Thanks to the diagnostics you added, it seems that the problem is in 
> IntelliJ. I'm attaching the output of both Studio (IDEA) and a simple Java 
> app. The classpath from Studio is empty, while the one from the simple Java 
> app is correct. I'm going to test a little bit more on Studio, and if this is 
> an issue with IDEA, I'll let the IDEA folks know about this issue.
> 
> Thanks,
> -Alex
> 
> 
> 
> On Sun, Aug 11, 2013 at 9:54 PM, Alex Ruiz <[hidden email]> wrote:
> Thanks, Adam. In addition to Attila's example, I'll extract my code into a 
> unit test to make it easier to run.
> 
> 
> On Sun, Aug 11, 2013 at 4:37 PM, kelemen <[hidden email]> wrote:
> You can debug my plugin easily:
> 
> 1. Download the current sources: 
> https://github.com/kelemen/netbeans-gradle-project/tree/gradle_1.8_tooling_api
> 2. Install NetBeans (I'm using 7.3.1 but should work with 7.2 as well).
> 3. Build the project.
> 4. Debug (This will start a new instance of NB).
> 5. Open any project.
> 
> Note 1: It is important to always build the project before run because it 
> seems that NB don't automatically build NB Maven based modules (unlike simple 
> Maven projects).
> 
> Note 2: If you want to step into the sources of the Tooling API, you have to 
> right click on the "Dependencies" node and "Download Sources".
> 
> Also, you need to configure, the Gradle version used to load the project. You 
> can do this in Tools/Options/Miscellaneous/Gradle for every project but by 
> default the version defined for the wrapper is used, so you can rely on that. 
> Anyway, every method the Tooling API allows is possible to use as a Gradle 
> location. See the wiki: 
> https://github.com/kelemen/netbeans-gradle-project/wiki/Project-Properties 
> ("Gradle home")
> 
> These are the new lines printed by the most recent Tooling API:
> 
> Tooling API ClassLoader: ModuleCL@91ed751[org.netbeans.gradle.project] (class 
> org.netbeans.StandardModule$OneModuleClassLoader)
>     * Classpath: 
> [file:/C:/Program%20Files/NetBeans%207.3/platform/lib/boot.jar, 
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/org-openide-modules.jar, 
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/org-openide-util-lookup.jar,
>  file:/C:/Program%20Files/NetBeans%207.3/platform/lib/org-openide-util.jar, 
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/boot_ja.jar, 
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/boot_pt_BR.jar, 
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/boot_ru.jar, 
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/boot_zh_CN.jar, 
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-modules_ja.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-modules_pt_BR.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-modules_ru.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-modules_zh_CN.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util-lookup_ja.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util-lookup_pt_BR.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util-lookup_ru.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util-lookup_zh_CN.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util_ja.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util_pt_BR.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util_ru.jar,
>  
> file:/C:/Program%20Files/NetBeans%207.3/platform/lib/locale/org-openide-util_zh_CN.jar,
>  file:/C:/Program%20Files/Java/jdk1.7.0_13/lib/dt.jar, 
> file:/C:/Program%20Files/Java/jdk1.7.0_13/lib/tools.jar]
>     * Codesource: 
> jar:file:/C:/git.repo/netbeans-gradle-project/target/netbeans_clusters/extra/modules/ext/org.netbeans.gradle.project/org-gradle/gradle-tooling-api.jar!/
>     * Resource: 
> jar:file:/C:/git.repo/netbeans-gradle-project/target/netbeans_clusters/extra/modules/ext/org.netbeans.gradle.project/org-gradle/gradle-tooling-api.jar!/org/gradle/tooling/internal/consumer/connection/ActionAwareConsumerConnection$DefaultBuildActionSerializationDetails.class
> 
> 
> 
> 
> 2013/8/12 Adam Murdoch [via Gradle] <[hidden email]>
> 
> I've added some diagnostics to the latest nightly build. Can you give this a 
> try and send me the output. It's logged to System.out.
> 
> Also is there some way I can run your code to debug what's going on?
> 
> On 11/08/2013, at 4:35 AM, kelemen <[hidden email]> wrote:
> 
>> The new API throws an exception for me. Here is the stacktrace:
>> https://gist.github.com/kelemen/6201595
>> 
>> And here is the code using the new API:
>> https://github.com/kelemen/netbeans-gradle-project/blob/d3a82f4f761fc6bf8ebcf75b00ae8da81f89ce58/src/main/java/org/netbeans/gradle/project/model/NbGradle18ModelLoader.java
>> 
>> 
>> 
>> --
>> View this message in context: 
>> http://gradle.1045684.n5.nabble.com/Proposal-for-retrieving-multiple-types-of-models-from-a-project-in-a-single-pass-using-the-Tooling-AI-tp5711516p5711666.html
>> Sent from the gradle-dev mailing list archive at Nabble.com.
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>> 
>>   http://xircles.codehaus.org/manage_email
>> 
>> 
> 
> 
> --
> Adam Murdoch
> Gradle Co-founder
> http://www.gradle.org
> VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
> http://www.gradleware.com
> 
> 
> 
> 
> 
> If you reply to this email, your message will be added to the discussion 
> below:
> http://gradle.1045684.n5.nabble.com/Proposal-for-retrieving-multiple-types-of-models-from-a-project-in-a-single-pass-using-the-Tooling-AI-tp5711516p5711668.html
>       
> To unsubscribe from Proposal for retrieving multiple types of models from a 
> project in a single pass, using the Tooling API, click here.
> NAML
> 
> 
> View this message in context: Re: Proposal for retrieving multiple types of 
> models from a project in a single pass, using the Tooling API
> Sent from the gradle-dev mailing list archive at Nabble.com.
> 
> 
> 
> 
> 
> If you reply to this email, your message will be added to the discussion 
> below:
> http://gradle.1045684.n5.nabble.com/Proposal-for-retrieving-multiple-types-of-models-from-a-project-in-a-single-pass-using-the-Tooling-AI-tp5711516p5711673.html
> To unsubscribe from Proposal for retrieving multiple types of models from a 
> project in a single pass, using the Tooling API, click here.
> NAML
> 
> 
> View this message in context: Re: Proposal for retrieving multiple types of 
> models from a project in a single pass, using the Tooling API
> Sent from the gradle-dev mailing list archive at Nabble.com.
> 
> 
> 
> If you reply to this email, your message will be added to the discussion 
> below:
> http://gradle.1045684.n5.nabble.com/Proposal-for-retrieving-multiple-types-of-models-from-a-project-in-a-single-pass-using-the-Tooling-AI-tp5711516p5711675.html
> To unsubscribe from Proposal for retrieving multiple types of models from a 
> project in a single pass, using the Tooling API, click here.
> NAML
> 
> 
> View this message in context: Re: Proposal for retrieving multiple types of 
> models from a project in a single pass, using the Tooling API
> Sent from the gradle-dev mailing list archive at Nabble.com.
> 
> 
> 
> If you reply to this email, your message will be added to the discussion 
> below:
> http://gradle.1045684.n5.nabble.com/Proposal-for-retrieving-multiple-types-of-models-from-a-project-in-a-single-pass-using-the-Tooling-AI-tp5711516p5711680.html
> To unsubscribe from Proposal for retrieving multiple types of models from a 
> project in a single pass, using the Tooling API, click here.
> NAML
> 
> 
> View this message in context: Re: Proposal for retrieving multiple types of 
> models from a project in a single pass, using the Tooling API
> Sent from the gradle-dev mailing list archive at Nabble.com.


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com



Reply via email to