{"record":{"id":"d183fa12fface7e1","repo":"quarkusio/quarkus","slug":"this-feature-is-not-yet-implemented-outside-of-the","errorCode":null,"errorMessage":"This feature is not yet implemented outside of the Gradle Plugin.","messagePattern":"This feature is not yet implemented outside of the Gradle Plugin\\.","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/buildfile/GenericGradleBuildFile.java","lineNumber":18,"sourceCode":"package io.quarkus.devtools.project.buildfile;\n\nimport java.io.IOException;\nimport java.util.Collection;\n\nimport io.quarkus.devtools.project.extensions.ExtensionInstallPlan;\nimport io.quarkus.devtools.project.extensions.ExtensionManager;\nimport io.quarkus.maven.dependency.ArtifactCoords;\nimport io.quarkus.maven.dependency.ArtifactKey;\n\n/**\n * TODO We need to find a way to use the gradle api outside of a gradle plugin\n */\nabstract class GenericGradleBuildFile implements ExtensionManager {\n\n    @Override\n    public Collection<ArtifactCoords> getInstalled() throws IOException {\n        throw new IllegalStateException(\"This feature is not yet implemented outside of the Gradle Plugin.\");\n    }\n\n    @Override\n    public Collection<ArtifactCoords> getInstalledPlatforms() throws IOException {\n        throw new IllegalStateException(\"This feature is not yet implemented outside of the Gradle Plugin.\");\n    }\n\n    @Override\n    public InstallResult install(Collection<ArtifactCoords> coords) throws IOException {\n        throw new IllegalStateException(\"This feature is not yet implemented outside of the Gradle Plugin.\");\n    }\n\n    @Override\n    public InstallResult install(ExtensionInstallPlan request) throws IOException {\n        throw new IllegalStateException(\"This feature is not yet implemented outside of the Gradle Plugin.\");\n    }\n\n    @Override","sourceCodeStart":1,"sourceCodeEnd":36,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/buildfile/GenericGradleBuildFile.java#L1-L36","documentation":"GenericGradleBuildFile.getInstalled() is an ExtensionManager implementation that intentionally throws IllegalStateException, because enumerating installed extensions requires the Gradle API which is only available inside the Gradle plugin, not in standalone devtools processes (see the TODO in the source).","triggerScenarios":"Calling getInstalled() on a GenericGradleBuildFile outside a Gradle plugin execution — e.g. invoking the Quarkus CLI/devtools API directly against a Gradle project where the extension manager is backed by GenericGradleBuildFile.","commonSituations":"Listing installed Quarkus extensions on a Gradle project via the devtools API instead of Gradle tasks; IDE tools or scripts that assume Maven-style extension listing works for Gradle too.","solutions":["Run the equivalent operation through the Gradle plugin/tasks (e.g. the Quarkus Gradle plugin's extension tasks) instead of the standalone API.","Inspect build.gradle / the quarkus platform BOM dependency manually to determine installed extensions.","Use the Quarkus Gradle plugin's listExtensions task: ./gradlew quarkusListExtensions or inspect ./gradlew quarkusDependencies if available."],"exampleFix":"// before\n// devtools API on gradle project\nextManager.getInstalled(); // IllegalStateException\n// after\n// Gradle build\n// ./gradlew quarkusListExtensions","handlingStrategy":"type-guard","validationCode":"if (extManager instanceof GenericGradleBuildFile) {\n    throw new UnsupportedOperationException(\"getInstalled() is unsupported outside the Gradle plugin\");\n}","typeGuard":"boolean supportsProgrammaticListing(ExtensionManager m) {\n    return !(m instanceof GenericGradleBuildFile);\n}","tryCatchPattern":"try {\n    extManager.getInstalled();\n} catch (IllegalStateException e) {\n    if (e.getMessage().contains(\"not yet implemented outside of the Gradle Plugin\")) {\n        // switch to Gradle-plugin task or manual build.gradle inspection\n    }\n}","preventionTips":["Check the ExtensionManager implementation type before calling listing APIs.","For Gradle projects, expose extension info through Gradle tasks instead of the devtools API.","Parse build.gradle platform dependencies directly when programmatic listing is unavailable."],"tags":["gradle","unsupported-operation","quarkus-devtools"],"backgroundTag":"feature-not-implemented","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}