Skip to content

path of "/" in AmazonIdentityManagementCreateRoleTask crashes buildship in eclipse. #62

@DALDEI

Description

@DALDEI

Using a recent (1.17,2.0..) version of buildship + eclipse and gradle (3.0+), a project with a task of type AmazonIdentityManagementCreateRoleTask crashes with a InvalidArgumentException when imported by buildship. Tracking this down through

https://github.com/gradle/tooling-commons/blob/master/toolingmodel/src/main/java/com/gradleware/tooling/toolingmodel/repository/internal/DefaultOmniProjectTask.java

The conversion of gradle tasks to eclipse projects uses the 'path' property of tasks. (normally like ":build" ,":assemble" etc)
Since CreateRole has a property 'path' its picking that up instead, then crashing.

Running 'gradle tasks --all' with a build.gradle containing such a task you can see the "/" replacing the task name.

Like this:

task createDumbRole( type: AmazonIdentityManagementCreateRoleTask ){
  roleName "${testTempRoleName}"
  assumeRolePolicyDocument """ 
   {"Version":"2008-10-17",
     "Statement":[
       {"Effect":"Allow","Principal" : 
         {"AWS":["*"]},"Action":["sts:AssumeRole"]}]}
""".trim()
}

$ gradle tasks --all 

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

AWS tasks
---------
/ - Create Role.
deleteSessionFunction - Delete Lambda function.
invokePassthroughFunction - Invoke Lambda function.
invokeSessionFunction - Invoke Lambda function.

Which when loaded by buildship causes this non-obvious error



java.lang.IllegalArgumentException
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:77)
    at com.gradleware.tooling.toolingmodel.Path.<init>(Path.java:37)
    at com.gradleware.tooling.toolingmodel.Path.from(Path.java:81)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultOmniProjectTask.from(DefaultOmniProjectTask.java:88)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultOmniBuildInvocationsContainerBuilder.getAllProjectTasksByProjectPath(DefaultOmniBuildInvocationsContainerBuilder.java:104)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultOmniBuildInvocationsContainerBuilder.build(DefaultOmniBuildInvocationsContainerBuilder.java:60)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultOmniGradleProject.from(DefaultOmniGradleProject.java:183)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultOmniEclipseProject.from(DefaultOmniEclipseProject.java:273)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultOmniEclipseProject.from(DefaultOmniEclipseProject.java:252)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository$10.apply(DefaultModelRepository.java:215)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository$10.apply(DefaultModelRepository.java:210)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository.executeAndWait(DefaultModelRepository.java:357)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository.access$100(DefaultModelRepository.java:49)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository$14.call(DefaultModelRepository.java:314)
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4724)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3932)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4721)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository.getFromCache(DefaultModelRepository.java:331)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository.executeRequest(DefaultModelRepository.java:310)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository.executeRequest(DefaultModelRepository.java:281)
    at com.gradleware.tooling.toolingmodel.repository.internal.DefaultModelRepository.fetchEclipseGradleProjects(DefaultModelRepository.java:218)
    at org.eclipse.buildship.core.workspace.internal.DefaultModelProvider.fetchEclipseGradleProjects(DefaultModelProvider.java:66)
    at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.fetchEclipseProjects(SynchronizeGradleBuildsJob.java:83)
    at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.synchronizeBuild(SynchronizeGradleBuildsJob.java:75)
    at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.runToolingApiJob(SynchronizeGradleBuildsJob.java:68)
    at org.eclipse.buildship.core.util.progress.ToolingApiJob$1.run(ToolingApiJob.java:73)
    at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:62)
    at org.eclipse.buildship.core.util.progress.ToolingApiJob.run(ToolingApiJob.java:70)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)


Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions