blob: 400a4f58529dc44f255f08cb09873ba1e5d201bc [file]
<!--
Copyright 2000-2026 JetBrains s.r.o. and contributors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude" package="org.apache.grails.intellij.plugin">
<id>org.intellij.grails</id>
<name>Apache Grails</name>
<category>JVM Frameworks</category>
<description>
<![CDATA[
Provides integration with the <a href="https://grails.apache.org">Apache Grails</a> framework.
<ul>
<li>Import a generated Grails project or create a new one directly from the IDE</li>
<li>Switch to the <b>Grails</b> view in the <b>Project</b> tool window</li>
<li>Edit Grails files with coding assistance features, such as code completion, navigation, inspections, refactoring, and much more</li>
<li>Use dedicated Grails run/debug configurations</li>
</ul>
]]>
</description>
<vendor url="https://grails.apache.org/">Apache Software Foundation</vendor>
<dependencies>
<plugin id="com.intellij.java"/>
<plugin id="com.intellij.javaee"/>
<plugin id="com.intellij.javaee.web"/>
<module name="intellij.javaee.platform"/>
<module name="intellij.javaee.platform.impl"/>
<plugin id="com.intellij.persistence"/>
<plugin id="com.intellij.javaee.jpa"/>
<plugin id="com.intellij.jsp"/>
<plugin id="com.intellij.javaee.el"/>
<plugin id="org.intellij.groovy"/>
<plugin id="com.intellij.properties"/>
<plugin id="com.intellij.database"/>
<plugin id="com.intellij.spring"/>
<module name="intellij.spring"/>
<module name="intellij.spring.core"/>
<plugin id="org.jetbrains.plugins.gradle"/>
<plugin id="com.intellij.modules.ultimate"/>
<plugin id="com.intellij.microservices.jvm"/>
<module name="intellij.properties.backend"/>
<module name="intellij.properties.backend.psi"/>
<module name="intellij.regexp"/>
</dependencies>
<content namespace="grails">
<module name="org.apache.grails.intellij.module.copyright"/>
<module name="org.apache.grails.intellij.module.i18n"/>
<module name="org.apache.grails.intellij.module.maven"/>
<module name="org.apache.grails.intellij.module.hibernate"/>
<module name="org.apache.grails.intellij.module.langInjection"/>
<module name="org.apache.grails.intellij.module.coverage"/>
</content>
<depends optional="true" config-file="grails-js-integration.xml">JavaScript</depends>
<depends optional="true" config-file="grails-css-integration.xml">com.intellij.css</depends>
<resource-bundle>messages.GrailsBundle</resource-bundle>
<extensionPoints>
<extensionPoint name="facetProvider" dynamic="true" interface="org.apache.grails.intellij.plugin.util.GrailsFacetProvider"/>
<extensionPoint name="applicationProvider" dynamic="true" interface="org.apache.grails.intellij.plugin.structure.GrailsApplicationProvider"/>
<extensionPoint name="commandExecutor" dynamic="true" interface="org.apache.grails.intellij.plugin.runner.GrailsCommandExecutor"/>
<extensionPoint name="commandProvider" dynamic="true" interface="org.apache.grails.intellij.plugin.commands.GrailsCommandProvider"/>
<extensionPoint name="artefactHandler" dynamic="true" interface="org.apache.grails.intellij.plugin.artefact.api.GrailsArtefactHandler"/>
<extensionPoint name="viewNodeProvider" dynamic="true" interface="org.apache.grails.intellij.plugin.projectView.api.GrailsViewNodeProvider"/>
<extensionPoint name="gspJsInjectionTag" dynamic="true" beanClass="org.apache.grails.intellij.plugin.addins.js.GspJsInjectionTagBean"/>
</extensionPoints>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
<projectResolve implementation="org.apache.grails.intellij.plugin.gradle.GrailsProjectResolverExtension"/>
<taskManager implementation="org.apache.grails.intellij.plugin.gradle.GrailsTaskManagerExtension"/>
</extensions>
<extensions defaultExtensionNs="org.intellij.grails">
<commandExecutor implementation="org.apache.grails.intellij.plugin.runner.impl.Grails3GradleCommandExecutor"/>
<commandExecutor implementation="org.apache.grails.intellij.plugin.runner.impl.GrailsInstallationCommandExecutor"/>
<commandExecutor implementation="org.apache.grails.intellij.plugin.runner.impl.Grails3InstallationCommandExecutor"/>
<facetProvider implementation="org.apache.grails.intellij.plugin.spring.GrailsSpringFacetProvider"/>
<facetProvider implementation="org.apache.grails.intellij.plugin.util.GrailsWebFacetProvider"/> <!--j2ee plugin-->
<applicationProvider id="default" implementation="org.apache.grails.intellij.plugin.structure.impl.PlainGrailsApplicationProvider"/>
<applicationProvider implementation="org.apache.grails.intellij.plugin.structure.impl.Grails3ApplicationProvider"/>
<commandProvider implementation="org.apache.grails.intellij.plugin.commands.OldGrailsCommandProvider"/>
<commandProvider implementation="org.apache.grails.intellij.plugin.commands.Grails3CommandProvider"/>
<viewNodeProvider implementation="org.apache.grails.intellij.plugin.projectView.impl.GrailsAppNodeProvider"/>
<viewNodeProvider implementation="org.apache.grails.intellij.plugin.projectView.impl.OldGrailsNodeProvider"/>
<viewNodeProvider implementation="org.apache.grails.intellij.plugin.projectView.impl.Grails3NodeProvider"/>
<!-- asset-pipeline: <asset:script> bodies are inline JavaScript (deferred scripts). -->
<gspJsInjectionTag name="asset:script"/>
</extensions>
<extensions defaultExtensionNs="org.intellij.groovy">
<membersContributor implementation="org.apache.grails.intellij.plugin.references.GrailsArtifactNonCodeMemberProcessor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.CodecNonCodeMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.pluginClass.GrailsPluginClassMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.GrailsResourceClassMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.filter.GrailsFilterClosureMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.domain.criteria.CriteriaBuilderImplicitMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.domain.criteria.BuildableCriteriaImplicitMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.config.BuildConfigMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.config.ConfigMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.spring.GrailsWebApplicationContextMembersContributor"/> <!-- Spring Support -->
<membersContributor implementation="org.apache.grails.intellij.plugin.tests.GrailsTestMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.constraints.GrailsValidationMethodsContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.pluginSupport.seachable.SearchableMemberMethodContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.pluginSupport.webflow.WebFlowMethodContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.domain.criteria.CriteriaClosureMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.domain.namedQuery.NamedCriteriaProxyMembersContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.pluginSupport.resources.GrailsResourcesClosureMethodContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.domain.detachedCriteria.DetachedCriteriaClosureMemberProvider"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.domain.detachedCriteria.DetachedCriteriaMemberProvider"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.controller.HttpRequestMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.references.controller.HttpResponseMemberContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.spring.GrailsResourcesGroovyMemberContributor"/>
<astTransformationSupport implementation="org.apache.grails.intellij.plugin.lang.Grails3TraitInjectorContributor"/>
<closureMissingMethodContributor implementation="org.apache.grails.intellij.plugin.pluginSupport.webflow.WebFlowEventDefinitionMethodContributor"/>
<closureMissingMethodContributor implementation="org.apache.grails.intellij.plugin.references.GrailsClosureMemberContributor"/>
<closureMissingMethodContributor implementation="org.apache.grails.intellij.plugin.references.constraints.GrailsConstraintsClosureMemberProvider"/>
<closureMissingMethodContributor implementation="org.apache.grails.intellij.plugin.references.urlMappings.UrlMappingConstraintClosureMemberProvider"/>
<closureMissingMethodContributor implementation="org.apache.grails.intellij.plugin.references.constraints.GrailsConstraintsGroupClosureMemberProvider"/>
<closureMissingMethodContributor implementation="org.apache.grails.intellij.plugin.config.BuildConfigClosureMemberContributor"/>
<methodComparator implementation="org.apache.grails.intellij.plugin.references.controller.GspTagMethodComparator"/>
<overloadResolver implementation="org.apache.grails.intellij.plugin.references.controller.GspTagMethodOverloadResolver"/>
<typeCalculator forClass="org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall"
implementationClass="org.apache.grails.intellij.plugin.references.domain.criteria.CriteriaReturnTypeCalculator"/>
<groovySourceFolderDetector implementation="org.apache.grails.intellij.plugin.actions.GrailsGroovySourceFolderDetector"/>
<referenceTypeEnhancer implementation="org.apache.grails.intellij.plugin.pluginSupport.spock.GrailsSpockEnhancer"/>
<referenceTypeEnhancer implementation="org.apache.grails.intellij.plugin.tests.GrailsTestVariableEnhancer"/>
<referenceTypeEnhancer implementation="org.apache.grails.intellij.plugin.util.PredefinedTypeReferenceEnhancer"/>
<variableEnhancer implementation="org.apache.grails.intellij.plugin.references.pluginClass.GrailsPluginParameterEnhancer"/>
<variableEnhancer implementation="org.apache.grails.intellij.plugin.spring.InjectedSpringBeanProvider"/>
<variableEnhancer implementation="org.apache.grails.intellij.plugin.references.taglib.TaglibClosureParamEnhancer"/>
<variableEnhancer implementation="org.apache.grails.intellij.plugin.references.constraints.GrailsValidatorParamTypeEnhancer"/>
<scriptTypeDetector implementation="org.apache.grails.intellij.plugin.GantFileDetector"/>
<mapContentProvider implementation="org.apache.grails.intellij.plugin.GrailsFlashMapContentProvider"/>
<namedArgumentProvider implementation="org.apache.grails.intellij.plugin.references.domain.criteria.CriteriaBuilderNamedArgumentProvider"/>
<namedArgumentProvider implementation="org.apache.grails.intellij.plugin.references.urlMappings.UrlMappingNamedArgumentProvider"/>
<astTransformationSupport implementation="org.apache.grails.intellij.plugin.references.domain.GormAstTransformationContributor"
order="before defaultSupport"/>
<unresolvedHighlightFileFilter implementation="org.apache.grails.intellij.plugin.config.GrailsConfigUnresolvedFileFilter"/>
<unresolvedHighlightFilter implementation="org.apache.grails.intellij.plugin.references.urlMappings.UrlMappingUnresolvedHighlightingFilter"/>
<configSlurperSupport implementation="org.apache.grails.intellij.plugin.config.BuildConfigSupport"/>
<configSlurperSupport implementation="org.apache.grails.intellij.plugin.config.ConfigSupport"/>
<configSlurperSupport implementation="org.apache.grails.intellij.plugin.config.DataSourcesSupport"/>
<methodMayBeStaticInspectionFilter implementation="org.apache.grails.intellij.plugin.inspections.GrailsMethodMayBeStaticFilter" />
<astTransformationSupport implementation="org.apache.grails.intellij.plugin.lang.DirtyCheckableContributor"/>
<astTransformationSupport implementation="org.apache.grails.intellij.plugin.lang.GormTraitContributor"/>
<gdslScriptProvider implementation="org.apache.grails.intellij.plugin.dsl.GrailsScriptProvider"/>
<!--grails.rest.Linkable-->
<astTransformationSupport implementation="org.apache.grails.intellij.plugin.feature.linkable.LinkableTransformationSupport"/>
<namedArgumentProvider implementation="org.apache.grails.intellij.plugin.feature.linkable.LinkableNamedArgumentsProvider"/>
<delegatesToProvider
implementation="org.apache.grails.intellij.plugin.references.domain.detachedCriteria.DetachedCriteriaDelegatesToProvider"/>
</extensions>
<extensions defaultExtensionNs="com.intellij">
<registryKey key="grails.advanced.mode" defaultValue="false"
description="Use to enable advanced mode for the domain class relations editor."/>
<registryKey key="grails.simple.debug" defaultValue="false"
description="Use simple debug strategy: pass --debug-jvm and then poll 5005. This switch works only for Grails &gt;= 3.1.5."/>
<registryKey key="grails.add.plain.output" defaultValue="true"
description="Add --plain-output to Grails commands even it was not specified explicitly. This switch works only for Grails &gt;= 3.0"/>
<registryKey key="grails.create.run.configurations" defaultValue="true"
description="Create run configurations on startup"/>
<registryKey key="grails.cli.project.wizard" defaultValue="false"
description="Show new project Grails wizard"/>
<internalFileTemplate name="Groovy Server Page"/>
<externalProjectDataService implementation="org.apache.grails.intellij.plugin.gradle.GrailsModuleGradleDataService"/>
<fileBasedIndex implementation="org.apache.grails.intellij.plugin.lang.gsp.gspIndex.GspIncludeIndex" />
<referencesSearch implementation="org.apache.grails.intellij.plugin.lang.gsp.search.JspPageReferenceSearcher"/> <!--j2ee plugin-->
<consoleFilterProvider implementation="org.apache.grails.intellij.plugin.GrailsConsoleFilterProvider"/>
<library.presentationProvider implementation="org.apache.grails.intellij.plugin.config.GrailsLibraryPresentationProvider"/>
<!--suppress PluginXmlValidity -->
<moduleBuilder builderClass="org.apache.grails.intellij.plugin.config.GrailsModuleBuilder" order="before griffonModuleBuilder"/>
<moduleBuilder builderClass="org.apache.grails.intellij.plugin.feature.forge.GrailsForgeModuleBuilder"/>
<projectStructureDetector implementation="org.apache.grails.intellij.plugin.config.GrailsProjectStructureDetector" order="before groovyDetector"/>
<programRunner implementation="org.apache.grails.intellij.plugin.runner.GrailsAppEngineDebuggerRunner"/>
<programRunner implementation="org.apache.grails.intellij.plugin.runner.GrailsDebuggerRunner" id="grailsDebuggerRunner"/>
<editorNotificationProvider implementation="org.apache.grails.intellij.plugin.annotator.GrailsForkSettingsNotificator"/>
<fileType name="GSP" language="GSP" extensions="gsp"
implementationClass="org.apache.grails.intellij.plugin.fileType.GspFileType" fieldName="GSP_FILE_TYPE"/>
<fileEditorProvider implementation="org.apache.grails.intellij.plugin.perspectives.DomainClassesRelationsEditorProvider"/>
<annotator language="Groovy" implementationClass="org.apache.grails.intellij.plugin.annotator.GrailsDomainAnnotator"/>
<annotator language="Groovy" implementationClass="org.apache.grails.intellij.plugin.annotator.GrailsSynchronizeStructureAnnotator"/>
<annotator language="Groovy" implementationClass="org.apache.grails.intellij.plugin.annotator.GrailsControllerAnnotator"/>
<liveTemplateContext contextId="GSP" implementation="org.apache.grails.intellij.plugin.GspTemplateContextType"/>
<lang.inspectionSuppressor language="GSP" implementationClass="org.apache.grails.intellij.plugin.inspections.GspSuppressionProvider"/>
<completion.contributor language="Groovy" implementationClass="org.apache.grails.intellij.plugin.GrailsCompletionContributor"/>
<completion.contributor language="Groovy" implementationClass="org.apache.grails.intellij.plugin.references.controller.ControllerAllowedMethodCompletionProvider" order="before groovyBasic"/>
<completion.contributor language="Groovy" implementationClass="org.apache.grails.intellij.plugin.config.GrailsPluginNameCompletionContributor"/>
<completion.contributor language="GSP" implementationClass="org.apache.grails.intellij.plugin.GspCompletionContributor"/>
<completion.contributor language="HTML" implementationClass="org.apache.grails.intellij.plugin.GspCompletionContributor"/>
<renamePsiElementProcessor implementation="org.apache.grails.intellij.plugin.references.controller.ActionRenameProcessor" order="last"/>
<renamePsiElementProcessor implementation="org.apache.grails.intellij.plugin.references.controller.ControllerRenameProcessor" order="last"/>
<renamePsiElementProcessor implementation="org.apache.grails.intellij.plugin.references.GrailsArtifactRenameProcessor" order="last"/>
<renamePsiElementProcessor implementation="org.apache.grails.intellij.plugin.references.domain.DomainFieldRenameProcessor"
order="first, before groovyFieldRenameProcessor, before jpaAttributeRenameProcessor"/>
<attachSourcesProvider implementation="org.apache.grails.intellij.plugin.GrailsAttachSourcesProvider" />
<xml.xmlTagRuleProvider implementation="org.apache.grails.intellij.plugin.lang.gsp.psi.gsp.impl.gtag.GspTagRuleProvider" />
<xml.xmlExtension implementation="org.apache.grails.intellij.plugin.lang.gsp.psi.html.impl.GspHtmlXmlExtension"
id="gsp-html" order="after poly-symbols"/>
<localInspection language="GSP" enabledByDefault="true"
groupPathKey="inspections.groupPath" groupKey="inspections.groupName" key="language.gsp"
shortName="GspInspection" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.GspTagInspection"/>
<syntaxHighlighter key="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.highlighter.GspSyntaxHighlighter"/>
<editorHighlighterProvider filetype="GSP"
implementationClass="org.apache.grails.intellij.plugin.lang.gsp.highlighter.GspEditorHighlighterProvider"/>
<lang.braceMatcher language="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.highlighter.GspPairedBraceMatcher"/>
<braceMatcher filetype="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.highlighter.GspFileBraceMatcher"/>
<lang.commenter language="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.highlighter.GspCommenter"/>
<lang.foldingBuilder language="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.folding.GspFoldingBuilder"/>
<lang.formatter language="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.formatter.GspFormattingModelBuilder"/>
<lang.parserDefinition language="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.parsing.gsp.GspParserDefinition"/>
<lang.fileViewProviderFactory language="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.GspFileviewProviderFactory"/>
<codeStyleSettingsProvider implementation="org.apache.grails.intellij.plugin.lang.gsp.formatter.settings.GspCodeStyleSettingsProvider"/>
<langCodeStyleSettingsProvider implementation="org.apache.grails.intellij.plugin.lang.gsp.formatter.settings.GspLanguageCodeStyleSettingsProvider"/>
<psi.referenceContributor language="Groovy" implementation="org.apache.grails.intellij.plugin.GrailsGroovyCodeReferenceContributor"/>
<psi.referenceContributor language="HTML" implementation="org.apache.grails.intellij.plugin.GrailsHtmlReferenceContributor"/>
<psi.referenceContributor language="GSP" implementation="org.apache.grails.intellij.plugin.GrailsGspReferenceContributor"/>
<referencesSearch implementation="org.apache.grails.intellij.plugin.lang.gsp.search.GspPageReferenceSearcher"/>
<referencesSearch implementation="org.apache.grails.intellij.plugin.lang.gsp.search.GspControllerReferenceSearcher"/>
<referencesSearch implementation="org.apache.grails.intellij.plugin.references.common.ArtifactFieldReferenceSearcher"/>
<methodReferencesSearch implementation="org.apache.grails.intellij.plugin.references.common.ArtifactPropertyGetterReferenceSearcher"/>
<referencesSearch implementation="org.apache.grails.intellij.plugin.lang.gsp.resolve.taglib.BuiltInTagReferenceSearcher"/>
<methodReferencesSearch implementation="org.apache.grails.intellij.plugin.pluginSupport.resources.GrailsResourceReferenceSearcher"/>
<debugger.codeFragmentFactory implementation="org.apache.grails.intellij.plugin.lang.gsp.debug.GspCodeFragmentFactory"/>
<problemHighlightFilter implementation="org.apache.grails.intellij.plugin.TemplateHighlightErrorFilter"/>
<lang.findUsagesProvider language="GSP" implementationClass="org.apache.grails.intellij.plugin.GspFindUsagesProvider"/>
<lang.unwrapDescriptor language="GSP" implementationClass="com.intellij.lang.xml.XmlUnwrapDescriptor"/>
<gotoClassContributor implementation="org.apache.grails.intellij.plugin.actions.GrailsGoToClassContributor"/>
<codeInsight.parameterInfo language="GSP"
implementationClass="org.jetbrains.plugins.groovy.lang.parameterInfo.GroovyParameterInfoHandler"/>
<enterHandlerDelegate implementation="org.apache.grails.intellij.plugin.lang.gsp.editor.actions.GspEnterHandler"/>
<typedHandler implementation="org.apache.grails.intellij.plugin.lang.gsp.editor.actions.GspTypedHandler" order="last" />
<braceMatcher filetype="GSP" implementationClass="com.intellij.xml.impl.XmlBraceMatcher"/>
<configurationType implementation="org.apache.grails.intellij.plugin.runner.GrailsRunConfigurationType"/>
<runConfigurationProducer implementation="org.apache.grails.intellij.plugin.runner.GrailsScriptRunConfigurationProducer"/>
<runConfigurationProducer implementation="org.apache.grails.intellij.plugin.tests.runner.GrailsTestConfigurationProducer"/>
<projectService serviceInterface="org.apache.grails.intellij.plugin.lang.gsp.psi.GspPsiElementFactory"
serviceImplementation="org.apache.grails.intellij.plugin.lang.gsp.psi.GspPsiElementFactoryImpl"/>
<xml.fileNSInfoProvider implementation="org.apache.grails.intellij.plugin.lang.gsp.completion.GspXmlFileNSInfoProvider"/>
<xml.elementDescriptorProvider implementation="org.apache.grails.intellij.plugin.lang.gsp.psi.gsp.impl.gtag.GspContentTagDescriptorProvider"
order="first"/>
<extendWordSelectionHandler implementation="org.apache.grails.intellij.plugin.editor.selection.GrailsGroovyInjectionSelectioner"/>
<extendWordSelectionHandler implementation="org.apache.grails.intellij.plugin.editor.selection.GrailsDependencySelectioner"/>
<highlightErrorFilter implementation="org.apache.grails.intellij.plugin.lang.gsp.GspErrorFilter" />
<projectService serviceImplementation="org.apache.grails.intellij.plugin.config.GrailsSettingsService"/>
<projectService serviceImplementation="org.apache.grails.intellij.plugin.lang.gsp.psi.gsp.impl.gtag.GspTagDescriptorService"/>
<pom.declarationSearcher implementation="org.apache.grails.intellij.plugin.lang.gsp.psi.groovy.impl.ModelVariableDeclarationSearcher"/>
<pom.declarationSearcher implementation="org.apache.grails.intellij.plugin.lang.gsp.psi.gsp.impl.gtag.GspTagVariableDeclarationSearcher"/>
<pom.declarationSearcher implementation="org.apache.grails.intellij.plugin.references.domain.namedQuery.GormNamedQueryDeclarationSearcher"/>
<pom.declarationSearcher implementation="org.apache.grails.intellij.plugin.references.domain.GrailsSyntheticFieldDeclarationSearcher"/>
<pom.declarationSearcher implementation="org.apache.grails.intellij.plugin.pluginSupport.resources.GrailsResourcesPomDeclarationSearcher"/>
<pom.declarationSearcher implementation="org.apache.grails.intellij.plugin.pluginSupport.webflow.WebFlowPomDeclarationSearcher"/>
<!-- Each entry must match a jar in the plugin's lib/ directory exactly; JPS resolves them by
name and silently skips anything it cannot find, so a stale entry disables the Grails JPS
builders with nothing more than a line in idea.log. These names are pinned by the
org.apache.grails.intellij.build.intellij-lib convention plugin rather than derived from
rootProject.name, which is what let this attribute go stale previously. -->
<compileServer.plugin classpath="org.apache.grails.intellij.compiler.jps-plugin.jar;org.apache.grails.intellij.compiler.grails-compiler-patch.jar"/>
<multiHostInjector implementation="org.apache.grails.intellij.plugin.lang.gsp.GspCssInjector"/>
<multiHostInjector implementation="org.apache.grails.intellij.plugin.references.constraints.GormRegexInjector"/>
<multiHostInjector implementation="org.apache.grails.intellij.plugin.references.domain.GormHqlInjector"/>
<gotoRelatedProvider implementation="org.apache.grails.intellij.plugin.actions.GrailsGotoRelatedProvider"/>
<indexPatternBuilder implementation="org.apache.grails.intellij.plugin.lang.gsp.highlighter.GspIndexPatternBuilder" />
<junitRecognizer implementation="org.apache.grails.intellij.plugin.tests.GrailsJUnitRecognizer" />
<lang.elementManipulator forClass="org.apache.grails.intellij.plugin.lang.gsp.psi.groovy.impl.GspOuterHtmlElementImpl"
implementationClass="org.apache.grails.intellij.plugin.lang.gsp.psi.groovy.impl.GspOuterHtmlElementManipulator"/>
<implicitUsageProvider implementation="org.apache.grails.intellij.plugin.GrailsImplicitUsageProvider"/>
<lang.documentationProvider language="GSP" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.GspTagDocumentationProvider"/>
<lang.documentationProvider language="Groovy" implementationClass="org.apache.grails.intellij.plugin.lang.gsp.GspTagDocumentationProvider"/>
<database.dataSourceDetector implementation="org.apache.grails.intellij.plugin.database.GrailsDataSourceDetector"/>
<intentionAction>
<language>Groovy</language>
<className>org.apache.grails.intellij.plugin.actions.GenerateViewIntention</className>
<categoryKey>library.name</categoryKey>
</intentionAction>
<intentionAction>
<language>Groovy</language>
<className>org.apache.grails.intellij.plugin.actions.MakeNullableIntention</className>
<categoryKey>library.name</categoryKey>
</intentionAction>
<intentionAction>
<language>Groovy</language>
<className>org.apache.grails.intellij.plugin.actions.MakeUniqueIntention</className>
<categoryKey>library.name</categoryKey>
</intentionAction>
<intentionAction>
<language>Groovy</language>
<className>org.apache.grails.intellij.plugin.actions.GrailsCreateActionByUsageIntention</className>
<categoryKey>library.name</categoryKey>
</intentionAction>
<!-- Spring Support -->
<renamePsiElementProcessor implementation="org.apache.grails.intellij.plugin.spring.GrLightVariableRenameProcessor" id="GrLightVariableRenameProcessor"/>
<spring.customModuleComponentsDiscoverer implementation="org.apache.grails.intellij.plugin.spring.GrailsSpringBeanDiscoverer"/>
<codeInsight.lineMarkerProvider language="Groovy" implementationClass="org.apache.grails.intellij.plugin.spring.SpringInjectionAnnotator"/>
<completion.contributor language="Groovy" implementationClass="org.apache.grails.intellij.plugin.spring.GrailsInjectedBeanCompletionContributor" order="before groovyBasic"/>
<aliasingPsiTargetMapper implementation="org.apache.grails.intellij.plugin.spring.SpringGrailsTargetMapper"/>
<aliasingPsiTargetMapper implementation="org.apache.grails.intellij.plugin.spring.GrailsSpringStereotypeAliasingPsiTargetMapper"/>
<referencesSearch implementation="org.apache.grails.intellij.plugin.spring.SpringBeanReferenceSearcher"/>
<debugger.positionManagerFactory implementation="org.apache.grails.intellij.plugin.lang.gsp.debug.GspPositionManagerFactory"/>
<defaultLiveTemplates file="liveTemplates/gsp.xml"/>
<iconProvider implementation="org.apache.grails.intellij.plugin.projectView.GrailsIconProvider"/>
<postStartupActivity implementation="org.apache.grails.intellij.plugin.structure.sync.GrailsStartupActivity"/>
<postStartupActivity implementation="org.apache.grails.intellij.plugin.structure.GrailsApplicationManagerRefresher"/>
<backgroundPostStartupActivity implementation="org.apache.grails.intellij.plugin.structure.sync.GrailsMvcStructureRefresher"/>
<editorNotificationProvider implementation="org.apache.grails.intellij.plugin.editor.GrailsEditorDecorator"/>
<projectViewPane implementation="org.apache.grails.intellij.plugin.projectView.GrailsProjectViewPane"/>
<treeStructureProvider implementation="org.apache.grails.intellij.plugin.projectView.GrailsTreeStructureProvider"/>
<multiHostInjector implementation="org.apache.grails.intellij.plugin.pluginSupport.assetPipeline.AssetScriptInjector"/>
<psi.referenceContributor language="GSP"
implementation="org.apache.grails.intellij.plugin.pluginSupport.assetPipeline.AssetReferenceContributor"/>
<semContributor implementation="org.apache.grails.intellij.plugin.spring.GrailsSpringSemContributor"/>
<ignoredFileProvider implementation="org.apache.grails.intellij.plugin.config.GrailsIgnoredProvider"/>
<notificationGroup id="Grails notifications" displayType="TOOL_WINDOW" toolWindowId="Grails Console" bundle="messages.GrailsBundle" key="notification.group.grails.notifications"/>
<notificationGroup id="grails" displayType="BALLOON" bundle="messages.GrailsBundle" key="notification.group.grails"/>
<notificationGroup id="Grails Configure" displayType="BALLOON" key="notification.group.display.name.grails.configure"/>
<postStartupActivity implementation="org.apache.grails.intellij.plugin.mvc.MvcModuleStructureSynchronizer$MyPostStartUpActivity"/>
<roots.watchedRootsProvider implementation="org.apache.grails.intellij.plugin.mvc.MvcWatchedRootProvider"/>
<pathMacroContributor implementation="org.apache.grails.intellij.plugin.mvc.MvcPathMacros"/>
<dependencySupport coordinate="org.grails:grails-core" kind="java" displayName="Grails Framework"/>
<dependencySupport coordinate="org.grails:grails-datastore-gorm" kind="java" displayName="GORM"/>
</extensions>
<actions>
<action id="grails.ViewGrailsEditorToolbarAction" class="org.apache.grails.intellij.plugin.editor.ViewGrailsEditorToolbarAction">
<add-to-group group-id="UIToggleActions" anchor="after" relative-to-action="ViewToolButtons"/>
</action>
<group id="grails.toolbar">
<group
id="grails.goto.domain"
class="org.apache.grails.intellij.plugin.editor.toolbar.GoToDomainAction"
icon="AllIcons.Nodes.DataTables"/>
<group
id="grails.goto.controller"
class="org.apache.grails.intellij.plugin.editor.toolbar.GoToControllerAction"
icon="AllIcons.Nodes.Controller"/>
<group
id="grails.goto.service"
class="org.apache.grails.intellij.plugin.editor.toolbar.GoToServiceAction"
icon="AllIcons.FileTypes.Config"/>
<group
id="grails.goto.view"
class="org.apache.grails.intellij.plugin.editor.toolbar.GoToViewAction"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Gsp_logo"/>
<group
id="grails.goto.test"
class="org.apache.grails.intellij.plugin.editor.toolbar.GoToTestAction"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Grails_test"/>
</group>
<group id="Grails" class="org.apache.grails.intellij.plugin.actions.GrailsActionGroup"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Grails">
<action
id="Grails.DomainClass"
class="org.apache.grails.intellij.plugin.actions.NewGrailsDomainClassAction"
icon="AllIcons.Nodes.DataTables"/>
<action
id="Grails.Controller"
class="org.apache.grails.intellij.plugin.actions.NewGrailsControllerAction"
icon="AllIcons.Nodes.Controller"/>
<action
id="Grails.Service"
class="org.apache.grails.intellij.plugin.actions.NewGrailsServiceAction"
icon="AllIcons.FileTypes.Config"/>
<action
id="Grails.Interceptor"
class="org.apache.grails.intellij.plugin.actions.NewGrailsInterceptorAction"
icon="AllIcons.General.Filter"/>
<action
id="Grails.Filter"
class="org.apache.grails.intellij.plugin.actions.NewGrailsFilterAction"
icon="AllIcons.General.Filter"/>
<action
id="Grails.Script"
class="org.apache.grails.intellij.plugin.actions.NewGrailsScriptAction"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Grails"/>
<action
id="Grails.TagLib"
class="org.apache.grails.intellij.plugin.actions.NewGrailsTagLibAction"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Taglib"/>
<action id="Grails.GSP" class="org.apache.grails.intellij.plugin.actions.NewGspAction"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Gsp_logo"/>
<separator/>
<add-to-group group-id="NewGroup" anchor="first"/>
</group>
<!-- old id kept to avoid breaking user keymaps -->
<action id="Mvc.RunTarget" class="org.apache.grails.intellij.plugin.actions.GrailsRunCommandAction">
<keyboard-shortcut keymap="$default" first-keystroke="ctrl alt G"/>
<add-to-group group-id="ProjectViewPopupMenu" anchor="after" relative-to-action="AddFrameworkSupport"/>
<add-to-group group-id="NavbarPopupMenu" anchor="after" relative-to-action="AddFrameworkSupport"/>
<add-to-group group-id="ToolsMenu" anchor="last"/>
</action>
<group id="Grails.Actions" class="org.apache.grails.intellij.plugin.actions.GrailsActionGroup"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Grails" popup="true">
<action id="Grails.Plugins"
class="org.apache.grails.intellij.plugin.mvc.plugins.MvcPluginsAction"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Groovy_mvc_plugin"/>
<action id="Grails.ChangeSDK" class="org.apache.grails.intellij.plugin.actions.GrailsConfigureSDKAction"
icon="org.apache.grails.intellij.plugin.GroovyMvcIcons.Grails"/>
<action id="Grails.UpdateSettings" class="org.apache.grails.intellij.plugin.actions.UpdateGrailsSettingsAction"
icon="AllIcons.Actions.Refresh"/>
<reference ref="Mvc.RunTarget"/>
<add-to-group group-id="ProjectViewPopupMenu" anchor="after" relative-to-action="AddFrameworkSupport"/>
<add-to-group group-id="NavbarPopupMenu" anchor="after" relative-to-action="AddFrameworkSupport"/>
<add-to-group group-id="ToolsMenu" anchor="last"/>
</group>
<action id="Generate.GrailsView"
class="org.apache.grails.intellij.plugin.actions.GrailsGenerateViewAction">
<add-to-group group-id="GenerateGroup"/>
</action>
<action id="Grails.WAR" class="org.apache.grails.intellij.plugin.actions.GrailsWarAction">
<add-to-group group-id="BuildMenu" anchor="last"/>
</action>
</actions>
<xi:include href="grails-method-descriptors.xml"/>
<!-- GSON -->
<extensions defaultExtensionNs="com.intellij">
<fileType name="Groovy" extensions="gson"/>
<psi.referenceContributor language="Groovy" implementation="org.apache.grails.intellij.plugin.gson.GsonReferenceContributor"/>
<readWriteAccessDetector id="gson" order="before defaultGroovy"
implementation="org.apache.grails.intellij.plugin.gson.GsonRWAccessDetector"/>
<referencesSearch implementation="org.apache.grails.intellij.plugin.gson.GsonTemplateReferenceQueryExecutor"/>
</extensions>
<extensions defaultExtensionNs="org.intellij.groovy">
<expectedPackageNameProvider implementation="org.apache.grails.intellij.plugin.gson.GsonExpectedPackageProvider"/>
<importContributor implementation="org.apache.grails.intellij.plugin.gson.GsonImportContributor"/>
<astTransformationSupport implementation="org.apache.grails.intellij.plugin.gson.GsonTransformationSupport" order="before defaultSupport"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.gson.GrailsStreamingJsonBuilderContributor"/>
<membersContributor implementation="org.apache.grails.intellij.plugin.gson.GsonTemplateRendererContributor"/>
<namedArgumentProvider implementation="org.apache.grails.intellij.plugin.gson.GsonModelArgumentsProvider"/>
<namedArgumentProvider implementation="org.apache.grails.intellij.plugin.gson.GsonRenderNamedArgumentsProvider"/>
<positionManagerDelegate implementation="org.apache.grails.intellij.plugin.gson.GsonPositionManagerDelegate"/>
</extensions>
</idea-plugin>