This plugin helps tp build GraphQL applications in Java using the DGS framework

Overview

dgs-intellij-plugin

Build Version Downloads

This plugin helps tp build GraphQL applications in Java using the DGS framework. The DGS Framework is open sourced by Netflix and builds on Spring Boot.

The plugin integrates with the JS GraphQL plugin and adds DGS specific features such as code intentions and data fetcher navigation.

Status

The plugin is currently under early development and considered experimental.

Comments
  • Must be executed under progress indicator: com.intellij.openapi.progress.EmptyProgressIndicator@5a0e5166. Please see e.g. ProgressManager.runProcess()

    Must be executed under progress indicator: com.intellij.openapi.progress.EmptyProgressIndicator@5a0e5166. Please see e.g. ProgressManager.runProcess()

    Hi all, since last two weeks I get error thrown by "DGS plugin" over and over again making it impossible to use the plugin.

    System: MacOS Monterey

    Intellij Version

    IntelliJ IDEA 2022.1.1 (Ultimate Edition)
    Runtime version: 11.0.14.1+1-b2043.45 aarch64
    VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
    

    image

    Stack trace :

    java.lang.NullPointerException
    	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    	at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
    	at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
    	at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:722)
    	at com.intellij.concurrency.JobLauncherImpl.processQueue(JobLauncherImpl.java:357)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.processInOrder(InspectionRunner.java:293)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.visitElements(InspectionRunner.java:268)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$5(InspectionRunner.java:121)
    	at com.intellij.codeInspection.InspectionEngine.withSession(InspectionEngine.java:226)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.inspect(InspectionRunner.java:109)
    	at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.collectInformationWithProgress(LocalInspectionsPass.java:132)
    	at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:97)
    	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:57)
    	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:419)
    	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152)
    	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:412)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
    	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:411)
    	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:387)
    	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174)
    	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:213)
    	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:385)
    	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:184)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
    Caused by: java.lang.NullPointerException: null cannot be cast to non-null type org.jetbrains.uast.UMethod
    	at com.netflix.dgs.plugin.hints.DgsInputArgumentInspector$buildVisitor$1.visitMethod(DgsInputArgumentInspector.kt:69)
    	at org.jetbrains.uast.UMethod$DefaultImpls.accept(UMethod.kt:42)
    	at org.jetbrains.uast.kotlin.KotlinUMethod.accept(KotlinUMethod.kt:18)
    	at com.intellij.uast.UastVisitorAdapter.visitElement(UastVisitorAdapter.java:32)
    	at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:52)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$10(InspectionRunner.java:317)
    	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$11(InspectionRunner.java:296)
    	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174)
    	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:213)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$12(InspectionRunner.java:330)
    	at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:159)
    	at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:151)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$13(InspectionRunner.java:294)
    	at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:130)
    	at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:119)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$14(InspectionRunner.java:294)
    	at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.lambda$call$0(JobLauncherImpl.java:297)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
    	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    	at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:282)
    	at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:270)
    	at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448)
    	... 5 more
    
    
    opened by NitroBlade91 7
  • DGS plugin gives a warning saying collectionType value set as input does not match the schema

    DGS plugin gives a warning saying collectionType value set as input does not match the schema

    Hi,

    I am getting a warning message when implementing a @DgsData function that contains a method inside.

    Script example:

    type Data @key(fields: "id") @extends{
      id: ID! @external
      configurations(settings: [ConfigInput!]!): [ConfigOutput!]!
    }
    
    input ConfigInput {
      name: String!
    }
    
    type ConfigOutput {
      value: String!
    }
    

    And implementing this method

     @DgsData(parentType = "Data", field = "configurations")
      fun type1Configurations(@InputArgument(collectionType = ConfigInput::class) settings: List<ConfigInput>): List<ConfigurationToggle> {
    
        // Work here
      }
    

    I keep getting a warning saying that @InputArgument type does not match the schema, expected @InputArgument (collectionType=ConfigInput) settings: List<ConfigInput>

    If I apply the fix hit the plugin gives it actually cause an error since it is not providing an extension for the collectionType ConfigInput

    image

    The same situation happens when using it on a typical query with no graphql federation.

    Can you please help, thanks!

    opened by vasquez-csdisco 4
  • Update to jetbrains 222

    Update to jetbrains 222

    IntelliJ updated to build 222 (2022.2.x) so we need to target the same. This build requires Java 17, which requires Kotlin 1.6.x.

    I also updated the validator versions to have one per year.

    Edit: Java 17 is not required and I have dropped those changes.

    opened by fedorka 1
  • Detect Dgs componets correctly in projects

    Detect Dgs componets correctly in projects

    Currently when dgs intellij plugin installed, it always show Dgs Components in the project view. I think it is better to determine if a project added dgs dependencies, then decide to show the Dgs Components.

    opened by hantsy 1
  • Remove validation and hints related to adding deprecated collection type.

    Remove validation and hints related to adding deprecated collection type.

    The DGS framework does not require the collection type to be specified with @InputArgument for list types and enums anymore. The plugin was still providing hints with collection type and also autofixing with collection type when missing. This PR removes that logic, so we no longer need to detect and add collection type.

    opened by srinivasankavitha 0
  • Address NPE on DgsInputArgumentInspector on UMethod

    Address NPE on DgsInputArgumentInspector on UMethod

    Don't assume node.toUElement will return a none-null reference. Have been observing the following exception.

    Caused by: java.lang.NullPointerException: null cannot be cast to non-null type org.jetbrains.uast.UMethod
    	at com.netflix.dgs.plugin.hints.DgsInputArgumentInspector$buildVisitor$1.visitMethod(DgsInputArgumentInspector.kt:69)
    	at org.jetbrains.uast.UMethod$DefaultImpls.accept(UMethod.kt:42)
    	at org.jetbrains.uast.kotlin.KotlinUMethod.accept(KotlinUMethod.kt:18)
    	at com.intellij.uast.UastVisitorAdapter.visitElement(UastVisitorAdapter.java:32)
    	at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:52)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$10(InspectionRunner.java:317)
    	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$11(InspectionRunner.java:296)
    	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174)
    	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:213)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$12(InspectionRunner.java:330)
    	at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:159)
    	at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:151)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$13(InspectionRunner.java:294)
    	at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:130)
    	at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:119)
    	at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$14(InspectionRunner.java:294)
    	at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.lambda$call$0(JobLauncherImpl.java:297)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
    	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    	at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:282)
    	at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:270)
    	at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448)
    
    opened by berngp 0
  • Fix validation of kotlin collection type for enums and lists of complex types.

    Fix validation of kotlin collection type for enums and lists of complex types.

    Collection types in kotlin need ::class for enums and lists of complex types. Fixes the following issues: https://github.com/Netflix/dgs-intellij-plugin/issues/29 https://github.com/Netflix/dgs-framework/issues/936

    opened by srinivasankavitha 0
  • Add more unit test coverage for input argument validation, and validate argument names

    Add more unit test coverage for input argument validation, and validate argument names

    1. Add more test coverage
    2. Handle @InputArgument(name=xyz) String xyz format for validating the arg name. Previously, only the @InputArgument String xyz format was handled
    3. Check if the argument names used with @InputArgument are valid names based on the schema, e.g. for the schema below, the corresponding data fetcher has the wrong arg name, and the validation will indicate a warning.
    type Query {
          movies(movieId: String) : Movie
    }
    
    @DgsQuery
    String movies(@InputArgument String movieIds) {
    ...
    }
    
    opened by srinivasankavitha 0
  • Fixes to get unit tests working properly.

    Fixes to get unit tests working properly.

    1. Enable Junit5 tests
    2. Update to latest js-graphql plugin release
    3. Fix bugs related to clearing cached component index after fixes during inpections
    4. Enable java and kotlin tests for input argument hints
    opened by srinivasankavitha 0
  • False positive hint about schema mismatch on final input argument parameters

    False positive hint about schema mismatch on final input argument parameters

    Making a method parameter final that is also annotated with @InputArgument creates a warning hint about not matching the schema. Removing the final modifier removes the hint.

    image

    opened by pschyma 1
  • Support DGS-generated types for Relay pagination (@connection directive)

    Support DGS-generated types for Relay pagination (@connection directive)

    It would be nice if the plugin could dynamically generate/understand the Connection/Edge/PageInfo types which are generated by the relay pagination feature of DGS. At present, any schema which refers to the generated Connection types shows errors, and autocomplete doesn't work when composing queries which need Connection, Edge or PageInfo types.

    enhancement 
    opened by seanf 1
  • Allow running on newer versions of IntelliJ (eg 2022.1 EAP)

    Allow running on newer versions of IntelliJ (eg 2022.1 EAP)

    The value pluginUntilBuild=213.* in gradle.properties is restricting the plugin to IntelliJ <= 2021.3, which means the plugin can't be installed into IntelliJ 2022.1 EAP.

    Are there any expected compatibility concerns? Would it be possible to increase the version, or even avoid setting an upper version?

    opened by seanf 6
Releases(v1.2.5)
Owner
Netflix, Inc.
Netflix Open Source Platform
Netflix, Inc.
eventbus-intellij-plugin 3.8 0.0 L1 Java Plugin to navigate between events posted by EventBus.

eventbus-intellij-plugin Plugin to navigate between events posted by EventBus. Post to onEvent and onEvent to Post Install There are two ways. Prefere

Shinnosuke Kugimiya 315 Aug 8, 2022
Gradle plugin which helps you analyze the size of your Android apps.

Ruler Ruler is a Gradle plugin which helps you analyze the size of your Android apps. Motivation App size is an important metric which directly correl

Spotify 913 Dec 28, 2022
A Gradle plugin to report the number of method references in your APK on every build.

Dexcount Gradle Plugin A Gradle plugin to report the number of method references in your APK, AAR, or java module. This helps you keep tabs on the gro

Keepsafe 3k Dec 29, 2022
CKlib is a gradle plugin that will build and package C/C++/Objective-C code for Kotlin/Native.

C Klib CKlib is a gradle plugin that will build and package C/C++/Objective-C code for Kotlin/Native. The Problem When you want to access C-etc code f

Touchlab 73 Nov 8, 2022
바코드 네트워크에서 제작 및 사용하는 Gradle build plugin 모음입니다. GradlePluginPortal 에 publish 되어 있습니다.

BarcodeGradlePlugins GradlePluginPortal 에 publish 되어 있는 바코드 네트워크의 빌드 플러그인들은 barcodeTasks 스코프 안에서 공통된 인자를 사용하여 실행될 수 있습니다. barcodeTasks { // 바코드 네트워크

Barcode Network 5 Nov 28, 2022
Entity Framework Core UI plugin for JetBrains Rider

Entity Framework Core UI plugin for JetBrains Rider This plugin introduces Entity Framework Core commands' UI inside JetBrains Rider. Features There a

Andrew Rublyov 125 Jan 2, 2023
A Unified, Modern and Efficient Bukkit plugin framework

LSPlugin ! WARNING ! This project is still under development DO NOT PUT INTO PRODUCTION ENVIRONMENT 一个专门为了 .DP7 群服务器 Charmless 的定制插件框架。未来Charmless的一切开

DP7 Network Works 0 Dec 24, 2021
gradle-android-scala-plugin adds scala language support to official gradle android plugin

gradle-android-scala-plugin gradle-android-scala-plugin adds scala language support to official gradle android plugin. See also sample projects at htt

saturday06 345 Dec 10, 2022
IntelliJ Idea Astor Plugin is a plugin that integrates Astor in Intellij Idea

IntelliJ Idea Astor Plugin IntelliJ Idea Astor Plugin is a plugin that integrates Astor in Intellij Idea. It communicates with a local/remote program

null 4 Aug 28, 2021
Intellij-platform-plugin-template - IntelliJ Platform Plugin Template

IntelliJ Platform Plugin Template TL;DR: Click the Use this template button and

null 0 Jan 1, 2022
K6-intellij-plugin - IntelliJ-based Plugin to run k6 tests locally or in the k6 Cloud from your IntelliJ IDE

IntelliJ-based Plugin to run k6 tests locally or in the k6 Cloud from your Intel

Mikhail Bolotov 8 Jan 2, 2023
Ownership-gradle-plugin - Gradle code ownership verification plugin

Gradle code ownership verification plugin A gradle plugin that will verify owner

null 4 Dec 15, 2022
Audio notifications for your Gradle build status

Let me serenade you ?? View Releases and Changelogs ?? Currently only functional on Mac OSX ?? Serenador is a Gradle plugin that utilizes text-to-spee

Thanos Psaridis 7 Jun 27, 2022
Add a different ribbon to each of your Android app variants using this gradle plugin. Of course, configure it as you will

Easylauncher gradle plugin for Android Modify the launcher icon of each of your app-variants using simple gradle rules. Add ribbons of any color, over

Mikel 960 Dec 18, 2022
Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Central, Corporate staging/snapshot servers and local Maven repositories).

GradleMavenPush Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Cen

 Vorlonsoft LLC 21 Oct 3, 2022
A solution to fix obfuscated Java services after ProGuard has run

ProGuard Service Mapper This is a service mapper for the ProGuard Java bytecode

Marvin 1 Jan 10, 2022
GPP is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and then promoting your App Bundle or APK to publishing app listings and other metadata.

Gradle Play Publisher Gradle Play Publisher is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and

null 3.9k Dec 30, 2022
This plugin help you to set material design icon to your project.

Android Material Design Icon Generator Plugin This plugin help you to set material design icons to your Android project. Installation Manually Downloa

Yusuke Konishi 2.4k Dec 30, 2022