This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/grails-intellij-plugin.git
The following commit(s) were added to refs/heads/main by this push:
new c1935d8 Fix mechanical deprecation warnings
c1935d8 is described below
commit c1935d8b25c4efc3b479d52b3b3659fe98026c07
Author: James Daugherty <[email protected]>
AuthorDate: Mon Jul 20 12:00:58 2026 -0500
Fix mechanical deprecation warnings
Replace deprecated APIs with their supported equivalents:
- Kotlin String.capitalize()/decapitalize() -> replaceFirstChar
- Query.asIterable() -> findAll()
- Class.newInstance() -> getDeclaredConstructor().newInstance()
- new URL(String) -> new URI(String).toURL()
- JDOMExternalizer -> local helpers preserving the <setting> XML format
- FilenameIndex.getFilesByName -> getVirtualFilesByName + PsiManager
---
.../jetbrains/plugins/grails/artefact/impl/util.kt | 6 +--
.../editor/toolbar/GrailsGoToArtefactActionBase.kt | 2 +-
.../grails/editor/toolbar/GrailsToolbarActions.kt | 6 +--
.../plugins/grails/lang/GormTraitContributor.kt | 4 +-
.../plugins/grails/plugins/descriptors.kt | 2 +-
src/org/jetbrains/plugins/grails/plugins/impl.kt | 2 +-
.../projectView/impl/OldGrailsNodeProvider.kt | 2 +-
.../grails/references/EnhancesTraitsCollector.kt | 2 +-
...GrailsMethodNamedArgumentReferenceProvider.java | 2 +-
.../GrailsPluginListReferenceProvider.java | 19 +++++---
.../grails/runner/GrailsRunConfiguration.java | 19 ++++----
...atableRunConfigurationWithCommonParameters.java | 55 ++++++++++++++++++----
.../impl/GrailsInstallationCommandExecutor.java | 9 +++-
.../grails/spring/GrailsSpringBeanDiscoverer.java | 2 +-
.../plugins/grails/util/GrailsArtifact.java | 5 +-
15 files changed, 94 insertions(+), 43 deletions(-)
diff --git a/src/org/jetbrains/plugins/grails/artefact/impl/util.kt
b/src/org/jetbrains/plugins/grails/artefact/impl/util.kt
index 06855fc..d2e9cda 100644
--- a/src/org/jetbrains/plugins/grails/artefact/impl/util.kt
+++ b/src/org/jetbrains/plugins/grails/artefact/impl/util.kt
@@ -87,7 +87,7 @@ private fun
GrailsArtefactHandler.collectConventionalArtefacts(application: Grai
val resultScope = artefactDirectoryScope.intersectWith(scope)
return AllClassesSearch.search(resultScope, project) { className ->
className.endsWith(artefactClassSuffix)
- }.asIterable().filter { artefactClass ->
+ }.findAll().filter { artefactClass ->
val file = artefactClass.containingFile?.virtualFile
file?.nameWithoutExtension == artefactClass.name && file?.fileType ==
GroovyFileType.GROOVY_FILE_TYPE
}
@@ -134,7 +134,7 @@ private fun
GrailsArtefactHandler.collectAnnotatedArtefacts(application: GrailsA
val annotationClass =
JavaPsiFacade.getInstance(project).findClass(GRAILS_ARTEFACT_ARTEFACT,
annotationClassSearchScope) ?: return null
- return AnnotatedElementsSearch.searchPsiClasses(annotationClass,
scope).asIterable().filter { artefactClass ->
+ return AnnotatedElementsSearch.searchPsiClasses(annotationClass,
scope).findAll().filter { artefactClass ->
artefactClass.containingFile?.virtualFile?.fileType ==
GroovyFileType.GROOVY_FILE_TYPE
&& artefactClass.name?.endsWith(artefactClassSuffix) ?: false
&&
artefactClass.modifierList?.findAnnotation(GRAILS_ARTEFACT_ARTEFACT)?.let {
@@ -151,7 +151,7 @@ private fun
GrailsArtefactHandler.collectSpecificAnnotatedArtefacts(application:
val project = application.project
val annotationClassSearchScope = application.getScope(true, false)
JavaPsiFacade.getInstance(project).findClass(annotationFqn,
annotationClassSearchScope)?.let { annotationClass ->
- AnnotatedElementsSearch.searchPsiClasses(annotationClass,
scope).asIterable().filter { artefactClass ->
+ AnnotatedElementsSearch.searchPsiClasses(annotationClass,
scope).findAll().filter { artefactClass ->
artefactClass.containingFile?.virtualFile?.fileType ==
GroovyFileType.GROOVY_FILE_TYPE &&
artefactClass.name?.endsWith(artefactClassSuffix) ?: false
}
diff --git
a/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsGoToArtefactActionBase.kt
b/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsGoToArtefactActionBase.kt
index c8bc248..f043215 100644
---
a/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsGoToArtefactActionBase.kt
+++
b/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsGoToArtefactActionBase.kt
@@ -28,7 +28,7 @@ import javax.swing.Icon
abstract class GrailsGoToArtefactActionBase(private val artefactType:
GrailsArtifact) : GrailsToolbarTargetAction<PsiClass>() {
@NlsSafe override fun getTitle(artefactData: ArtefactData): String {
- return artefactData.artefactName.capitalize() + artefactType.suffix
+ return artefactData.artefactName.replaceFirstChar { it.uppercaseChar() } +
artefactType.suffix
}
override fun getNavigateTargets(artefactData: ArtefactData):
MutableCollection<GrClassDefinition> = artefactType.getInstances(
diff --git
a/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsToolbarActions.kt
b/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsToolbarActions.kt
index 28f7cb0..d898ac6 100644
--- a/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsToolbarActions.kt
+++ b/src/org/jetbrains/plugins/grails/editor/toolbar/GrailsToolbarActions.kt
@@ -74,7 +74,7 @@ class GoToViewAction : GrailsToolbarVfileAction() {
override fun isOpenSingle(): Boolean = false
@ActionText override fun getTitle(artefactData: ArtefactData): String =
- GrailsBundle.message("action.text.go.to.views",
artefactData.artefactName.capitalize())
+ GrailsBundle.message("action.text.go.to.views",
artefactData.artefactName.replaceFirstChar { it.uppercaseChar() })
override fun getNavigateTargets(artefactData: ArtefactData):
Collection<VirtualFile> = VfsUtil.findRelativeFile(
artefactData.application.appRoot, GrailsUtils.VIEWS_DIRECTORY,
artefactData.artefactName
@@ -94,7 +94,7 @@ class GoToTestAction : GrailsToolbarVfileAction() {
override fun isOpenSingle(): Boolean = false
@ActionText override fun getTitle(artefactData: ArtefactData): String =
- GrailsBundle.message("action.text.go.to.tests",
artefactData.artefactName.capitalize())
+ GrailsBundle.message("action.text.go.to.tests",
artefactData.artefactName.replaceFirstChar { it.uppercaseChar() })
override fun getNavigateTargets(artefactData: ArtefactData):
Collection<VirtualFile> {
val result = mutableListOf<VirtualFile>()
@@ -110,7 +110,7 @@ class GoToTestAction : GrailsToolbarVfileAction() {
return result
}
- override fun createGenerateActions(artefactData: ArtefactData):
Collection<AnAction> = artefactData.artefactName.capitalize().let {
+ override fun createGenerateActions(artefactData: ArtefactData):
Collection<AnAction> = artefactData.artefactName.replaceFirstChar {
it.uppercaseChar() }.let {
listOf(
GenerateTestsAction(false, artefactData.artefactName,
GrailsArtifact.DOMAIN).apply {
templatePresentation.text =
GrailsBundle.message("action.text.generate.tests.unit", it)
diff --git a/src/org/jetbrains/plugins/grails/lang/GormTraitContributor.kt
b/src/org/jetbrains/plugins/grails/lang/GormTraitContributor.kt
index a289bf1..3d024cb 100644
--- a/src/org/jetbrains/plugins/grails/lang/GormTraitContributor.kt
+++ b/src/org/jetbrains/plugins/grails/lang/GormTraitContributor.kt
@@ -85,7 +85,7 @@ class GormTraitContributor : AstTransformationSupport {
if (initializer is GrLiteral) {
val value = initializer.value
if (value is String) {
- return value.capitalize()
+ return value.replaceFirstChar { it.uppercaseChar() }
}
}
}
@@ -112,7 +112,7 @@ class GormTraitContributor : AstTransformationSupport {
})
gormEntity.putUserData(GroovyDirectInheritorsSearcher.IGNORE_INHERITANCE_CHECK,
true)
val query = ClassInheritorsSearch.search(gormEntity, scope, true)
- val traits = query.asIterable().asSequence().filter {
+ val traits = query.findAll().asSequence().filter {
GrTraitUtil.isTrait(it)
}
gormEntity.removeUserData(GroovyDirectInheritorsSearcher.IGNORE_INHERITANCE_CHECK)
diff --git a/src/org/jetbrains/plugins/grails/plugins/descriptors.kt
b/src/org/jetbrains/plugins/grails/plugins/descriptors.kt
index c9e1c77..54fdc93 100644
--- a/src/org/jetbrains/plugins/grails/plugins/descriptors.kt
+++ b/src/org/jetbrains/plugins/grails/plugins/descriptors.kt
@@ -24,7 +24,7 @@ interface GrailsPluginDescriptor {
val pluginClass: PsiClass
val pluginVersion: String?
val pluginName: String
- get() = pluginClass.name?.removeSuffix(pluginClassSuffix)?.decapitalize()
?: ""
+ get() =
pluginClass.name?.removeSuffix(pluginClassSuffix)?.replaceFirstChar {
it.lowercaseChar() } ?: ""
}
diff --git a/src/org/jetbrains/plugins/grails/plugins/impl.kt
b/src/org/jetbrains/plugins/grails/plugins/impl.kt
index fe47972..92ecc21 100644
--- a/src/org/jetbrains/plugins/grails/plugins/impl.kt
+++ b/src/org/jetbrains/plugins/grails/plugins/impl.kt
@@ -44,7 +44,7 @@ fun GrailsApplication.getSourcePlugins():
Collection<Grails3SourcePluginDescript
private fun GrailsApplication.doComputeSourcePlugins():
Collection<Grails3SourcePluginDescriptor> {
return AllClassesSearch.search(getScope(true, false), project) { className ->
className.endsWith(pluginClassSuffix)
- }.asIterable().mapNotNull {
+ }.findAll().mapNotNull {
val application = GrailsApplicationManager.findApplication(it)
if (application == null || application == this) null
else Grails3SourcePluginDescriptor(it, application)
diff --git
a/src/org/jetbrains/plugins/grails/projectView/impl/OldGrailsNodeProvider.kt
b/src/org/jetbrains/plugins/grails/projectView/impl/OldGrailsNodeProvider.kt
index f644e8a..c7d4721 100644
--- a/src/org/jetbrains/plugins/grails/projectView/impl/OldGrailsNodeProvider.kt
+++ b/src/org/jetbrains/plugins/grails/projectView/impl/OldGrailsNodeProvider.kt
@@ -69,7 +69,7 @@ class OldGrailsNodeProvider : GrailsViewNodeProvider {
for (child in srcDir.children) {
manager.findDirectory(child)?.let {
val name = child.name
- val icon = (Language.findLanguageByID(name.capitalize()) ?:
Language.findLanguageByID(name.uppercase(Locale.getDefault())))
+ val icon = (Language.findLanguageByID(name.replaceFirstChar {
it.uppercaseChar() }) ?:
Language.findLanguageByID(name.uppercase(Locale.getDefault())))
?.associatedFileType?.icon ?: PlatformIcons.SOURCE_FOLDERS_ICON
result += GrailsPsiDirectoryNode(it, settings, icon, SRC_FOLDERS,
"Sources:$name", ::shouldShowItem)
}
diff --git
a/src/org/jetbrains/plugins/grails/references/EnhancesTraitsCollector.kt
b/src/org/jetbrains/plugins/grails/references/EnhancesTraitsCollector.kt
index e537921..127cfc6 100644
--- a/src/org/jetbrains/plugins/grails/references/EnhancesTraitsCollector.kt
+++ b/src/org/jetbrains/plugins/grails/references/EnhancesTraitsCollector.kt
@@ -50,7 +50,7 @@ private fun doFindTraits(project: Project, scope:
GlobalSearchScope): Map<String
val annotationClass =
JavaPsiFacade.getInstance(project).findClass(annotationFqn, scope) ?: return
emptyMap()
val annotatedClasses =
AnnotatedElementsSearch.searchPsiClasses(annotationClass, scope)
val result = mutableMapOf<String, MutableCollection<String>>()
- for (clazz in annotatedClasses.asIterable()) {
+ for (clazz in annotatedClasses.findAll()) {
if (!GrTraitUtil.isTrait(clazz)) continue
val traitFqn = clazz.qualifiedName ?: continue
val annotation = AnnotationUtil.findAnnotation(clazz, annotationFqn) ?:
continue
diff --git
a/src/org/jetbrains/plugins/grails/references/GrailsMethodNamedArgumentReferenceProvider.java
b/src/org/jetbrains/plugins/grails/references/GrailsMethodNamedArgumentReferenceProvider.java
index d7c1795..8ec018e 100644
---
a/src/org/jetbrains/plugins/grails/references/GrailsMethodNamedArgumentReferenceProvider.java
+++
b/src/org/jetbrains/plugins/grails/references/GrailsMethodNamedArgumentReferenceProvider.java
@@ -237,7 +237,7 @@ public final class
GrailsMethodNamedArgumentReferenceProvider extends PsiReferen
private void ensureInit() {
if (myInstance == null) {
try {
- myInstance = myClass.newInstance();
+ myInstance = myClass.getDeclaredConstructor().newInstance();
}
catch (Exception e) {
throw new RuntimeException(e);
diff --git
a/src/org/jetbrains/plugins/grails/references/pluginClass/GrailsPluginListReferenceProvider.java
b/src/org/jetbrains/plugins/grails/references/pluginClass/GrailsPluginListReferenceProvider.java
index 4a77f82..8bd5e15 100644
---
a/src/org/jetbrains/plugins/grails/references/pluginClass/GrailsPluginListReferenceProvider.java
+++
b/src/org/jetbrains/plugins/grails/references/pluginClass/GrailsPluginListReferenceProvider.java
@@ -24,6 +24,7 @@ import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiFile;
+import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.PsiPolyVariantReferenceBase;
import com.intellij.psi.PsiReference;
@@ -31,6 +32,7 @@ import com.intellij.psi.PsiReferenceProvider;
import com.intellij.psi.ResolveResult;
import com.intellij.psi.search.FilenameIndex;
import com.intellij.psi.search.GlobalSearchScope;
+import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ProcessingContext;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.grails.GroovyMvcIcons;
@@ -42,6 +44,7 @@ import
org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.literal
import org.jetbrains.plugins.groovy.lang.resolve.ElementResolveResult;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -84,11 +87,13 @@ public class GrailsPluginListReferenceProvider extends
PsiReferenceProvider {
Project project = element.getProject();
+ PsiManager psiManager = PsiManager.getInstance(project);
for (String fileName : FilenameIndex.getAllFilenames(project)) {
if (fileName.endsWith("GrailsPlugin.groovy") && fileName.length()
> "GrailsPlugin.groovy".length()) {
- PsiFile[] files = FilenameIndex.getFilesByName(project,
fileName, GlobalSearchScope.allScope(project));
+ Collection<VirtualFile> files =
FilenameIndex.getVirtualFilesByName(fileName,
GlobalSearchScope.allScope(project));
- for (PsiFile file : files) {
+ for (VirtualFile virtualFile : files) {
+ PsiFile file = psiManager.findFile(virtualFile);
if (file instanceof GroovyFile) {
for (PsiClass psiClass : ((GroovyFile)file).getClasses()) {
if (!psiClass.hasModifierProperty(PsiModifier.ABSTRACT) &&
psiClass.getName().endsWith("GrailsPlugin")) {
@@ -120,13 +125,15 @@ public class GrailsPluginListReferenceProvider extends
PsiReferenceProvider {
GlobalSearchScope searchScope = GlobalSearchScope.allScope(project);
- PsiFile[] files = FilenameIndex.getFilesByName(project, fileName,
searchScope);
+ Collection<VirtualFile> files =
FilenameIndex.getVirtualFilesByName(fileName, searchScope);
- if (files.length == 0) return ResolveResult.EMPTY_ARRAY;
+ if (files.isEmpty()) return ResolveResult.EMPTY_ARRAY;
- List<ResolveResult> res = new ArrayList<>(files.length);
+ PsiManager psiManager = PsiManager.getInstance(project);
+ List<ResolveResult> res = new ArrayList<>(files.size());
- for (PsiFile file : files) {
+ for (VirtualFile virtualFile : files) {
+ PsiFile file = psiManager.findFile(virtualFile);
if (file instanceof GroovyFile) {
for (PsiClass psiClass : ((GroovyFile)file).getClasses()) {
if (!psiClass.hasModifierProperty(PsiModifier.ABSTRACT) &&
psiClass.getName().endsWith("GrailsPlugin")) {
diff --git
a/src/org/jetbrains/plugins/grails/runner/GrailsRunConfiguration.java
b/src/org/jetbrains/plugins/grails/runner/GrailsRunConfiguration.java
index 32a3f91..990e565 100644
--- a/src/org/jetbrains/plugins/grails/runner/GrailsRunConfiguration.java
+++ b/src/org/jetbrains/plugins/grails/runner/GrailsRunConfiguration.java
@@ -28,7 +28,6 @@ import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.options.SettingsEditorGroup;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.InvalidDataException;
-import com.intellij.openapi.util.JDOMExternalizer;
import com.intellij.openapi.util.NlsContexts.TabTitle;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.WriteExternalException;
@@ -46,7 +45,8 @@ import
org.jetbrains.plugins.grails.structure.GrailsApplicationManager;
import org.jetbrains.plugins.groovy.mvc.MvcCommand;
import java.net.MalformedURLException;
-import java.net.URL;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.List;
public final class GrailsRunConfiguration
@@ -135,10 +135,9 @@ public final class GrailsRunConfiguration
String browserUrl = getLaunchBrowserUrl();
if (browserUrl != null) {
try {
- //noinspection ResultOfObjectAllocationIgnored
- new URL(browserUrl);
+ new URI(browserUrl).toURL();
}
- catch (MalformedURLException e) {
+ catch (MalformedURLException | URISyntaxException |
IllegalArgumentException e) {
throw new
RuntimeConfigurationException(GrailsBundle.message("run.configuration.error.invalid.launch.url"));
}
}
@@ -149,9 +148,9 @@ public final class GrailsRunConfiguration
public void readExternal(@NotNull Element element) throws
InvalidDataException {
super.readExternal(element);
- myGrailsApplicationRootPath = JDOMExternalizer.readString(element,
ROOT_ELEMENT_NAME);
- myLaunchBrowser = !"false".equals(JDOMExternalizer.readString(element,
LAUNCH_BROWSER));
- myLaunchBrowserUrl = JDOMExternalizer.readString(element,
LAUNCH_BROWSER_URL);
+ myGrailsApplicationRootPath = readSetting(element, ROOT_ELEMENT_NAME);
+ myLaunchBrowser = !"false".equals(readSetting(element, LAUNCH_BROWSER));
+ myLaunchBrowserUrl = readSetting(element, LAUNCH_BROWSER_URL);
final List<GrailsRunConfigurationExtension> configurationExtensions =
ContainerUtil.findAll(
GrailsCommandExecutor.EP_NAME.getExtensions(),
GrailsRunConfigurationExtension.class
@@ -169,9 +168,9 @@ public final class GrailsRunConfiguration
public void writeExternal(@NotNull Element element) throws
WriteExternalException {
super.writeExternal(element);
- JDOMExternalizer.write(element, ROOT_ELEMENT_NAME,
myGrailsApplicationRootPath);
+ writeSetting(element, ROOT_ELEMENT_NAME, myGrailsApplicationRootPath);
JdomKt.addOptionTag(element, LAUNCH_BROWSER,
Boolean.toString(myLaunchBrowser), "setting");
- JDOMExternalizer.write(element, LAUNCH_BROWSER_URL, myLaunchBrowserUrl);
+ writeSetting(element, LAUNCH_BROWSER_URL, myLaunchBrowserUrl);
final List<GrailsRunConfigurationExtension> configurationExtensions =
ContainerUtil.findAll(
GrailsCommandExecutor.EP_NAME.getExtensions(),
GrailsRunConfigurationExtension.class
diff --git
a/src/org/jetbrains/plugins/grails/runner/LocatableRunConfigurationWithCommonParameters.java
b/src/org/jetbrains/plugins/grails/runner/LocatableRunConfigurationWithCommonParameters.java
index f062a44..3cb0556 100644
---
a/src/org/jetbrains/plugins/grails/runner/LocatableRunConfigurationWithCommonParameters.java
+++
b/src/org/jetbrains/plugins/grails/runner/LocatableRunConfigurationWithCommonParameters.java
@@ -19,8 +19,8 @@ package org.jetbrains.plugins.grails.runner;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.LocatableConfigurationBase;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.InvalidDataException;
-import com.intellij.openapi.util.JDOMExternalizer;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.JdomKt;
@@ -30,6 +30,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
@ApiStatus.Internal
@@ -82,22 +83,60 @@ public abstract class
LocatableRunConfigurationWithCommonParameters extends Loca
@Override
public void readExternal(@NotNull Element element) throws
InvalidDataException {
super.readExternal(element);
- myVMParameters = JDOMExternalizer.readString(element, "vmparams");
- myProgramParameters = JDOMExternalizer.readString(element, "cmdLine");
+ myVMParameters = readSetting(element, "vmparams");
+ myProgramParameters = readSetting(element, "cmdLine");
- String sPassParentEnvironment = JDOMExternalizer.readString(element,
"passParentEnv");
+ String sPassParentEnvironment = readSetting(element, "passParentEnv");
myPassParentEnv = StringUtil.isEmpty(sPassParentEnvironment) ||
Boolean.parseBoolean(sPassParentEnvironment);
myEnvs.clear();
- JDOMExternalizer.readMap(element, myEnvs, null, "env");
+ for (Element env : element.getChildren("env")) {
+ String name = env.getAttributeValue("name");
+ if (name != null) {
+ myEnvs.put(name, env.getAttributeValue("value"));
+ }
+ }
}
@Override
public void writeExternal(@NotNull Element element) throws
WriteExternalException {
super.writeExternal(element);
- JDOMExternalizer.write(element, "vmparams", myVMParameters);
- JDOMExternalizer.write(element, "cmdLine", myProgramParameters);
- JDOMExternalizer.writeMap(element, myEnvs, null, "env");
+ writeSetting(element, "vmparams", myVMParameters);
+ writeSetting(element, "cmdLine", myProgramParameters);
+ myEnvs.keySet().stream().sorted().forEach(name -> {
+ Element env = new Element("env");
+ env.setAttribute("name", name);
+ String value = myEnvs.get(name);
+ if (value != null) {
+ env.setAttribute("value", value);
+ }
+ element.addContent(env);
+ });
JdomKt.addOptionTag(element, "passParentEnv",
Boolean.toString(myPassParentEnv), "setting");
}
+
+ /**
+ * Writes a {@code <setting name=".." value=".."/>} child element, matching
the legacy
+ * {@code JDOMExternalizer.write} XML format so persisted run configurations
stay compatible.
+ */
+ protected static void writeSetting(@NotNull Element root, @NotNull String
name, @Nullable String value) {
+ Element setting = new Element("setting");
+ setting.setAttribute("name", name);
+ setting.setAttribute("value", value == null ? "" : value);
+ root.addContent(setting);
+ }
+
+ /**
+ * Reads the value of a {@code <setting name=".."/>} child element, matching
the legacy
+ * {@code JDOMExternalizer.readString} XML format.
+ */
+ protected static @Nullable String readSetting(@NotNull Element root,
@NotNull String name) {
+ List<Element> settings = root.getChildren("setting");
+ for (Element setting : settings) {
+ if (Comparing.strEqual(setting.getAttributeValue("name"), name)) {
+ return setting.getAttributeValue("value");
+ }
+ }
+ return null;
+ }
}
diff --git
a/src/org/jetbrains/plugins/grails/runner/impl/GrailsInstallationCommandExecutor.java
b/src/org/jetbrains/plugins/grails/runner/impl/GrailsInstallationCommandExecutor.java
index 7b58556..9cd9e81 100644
---
a/src/org/jetbrains/plugins/grails/runner/impl/GrailsInstallationCommandExecutor.java
+++
b/src/org/jetbrains/plugins/grails/runner/impl/GrailsInstallationCommandExecutor.java
@@ -28,7 +28,7 @@ import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkTypeId;
import com.intellij.openapi.roots.ModuleRootManager;
-import com.intellij.openapi.util.JDOMExternalizer;
+import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
@@ -179,7 +179,12 @@ public final class GrailsInstallationCommandExecutor
@Override
public @Nullable Boolean readAdditionalConfiguration(@NotNull Element
element) {
- return Boolean.parseBoolean(JDOMExternalizer.readString(element,
DEPS_CLASSPATH));
+ for (Element setting : element.getChildren("setting")) {
+ if (Comparing.strEqual(setting.getAttributeValue("name"),
DEPS_CLASSPATH)) {
+ return Boolean.parseBoolean(setting.getAttributeValue("value"));
+ }
+ }
+ return Boolean.FALSE;
}
@Override
diff --git
a/src/org/jetbrains/plugins/grails/spring/GrailsSpringBeanDiscoverer.java
b/src/org/jetbrains/plugins/grails/spring/GrailsSpringBeanDiscoverer.java
index 5ba7154..5576c77 100644
--- a/src/org/jetbrains/plugins/grails/spring/GrailsSpringBeanDiscoverer.java
+++ b/src/org/jetbrains/plugins/grails/spring/GrailsSpringBeanDiscoverer.java
@@ -171,7 +171,7 @@ public final class GrailsSpringBeanDiscoverer extends
CustomModuleComponentsDisc
}
}
} else {
- AllClassesSearch.search(scope, module.getProject(), name ->
name.endsWith("GrailsPlugin")).asIterable().forEach((PsiElement clazz) -> {
+ AllClassesSearch.search(scope, module.getProject(), name ->
name.endsWith("GrailsPlugin")).findAll().forEach((PsiElement clazz) -> {
if (!(clazz instanceof GrTypeDefinition)) clazz =
clazz.getNavigationElement();
if (!(clazz instanceof GrTypeDefinition)) return;
List<GrailsResourceBeanExtractor.BeanDescriptor> descriptors =
GrailsResourceBeanExtractor.getBeanDescriptorsFromPluginClass(
diff --git a/src/org/jetbrains/plugins/grails/util/GrailsArtifact.java
b/src/org/jetbrains/plugins/grails/util/GrailsArtifact.java
index 2843f9d..d666bba 100644
--- a/src/org/jetbrains/plugins/grails/util/GrailsArtifact.java
+++ b/src/org/jetbrains/plugins/grails/util/GrailsArtifact.java
@@ -340,9 +340,10 @@ public enum GrailsArtifact {
Project project = module.getProject();
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
GlobalSearchScope scope =
module.getModuleWithDependenciesAndLibrariesScope(false);
- PsiFile[] allFiles = FilenameIndex.getFilesByName(project,
"grails-plugin.xml", scope);
+ PsiManager psiManager = PsiManager.getInstance(project);
JavaDirectoryService directoryService = JavaDirectoryService.getInstance();
- for (PsiFile file : allFiles) {
+ for (VirtualFile virtualFile :
FilenameIndex.getVirtualFilesByName("grails-plugin.xml", scope)) {
+ PsiFile file = psiManager.findFile(virtualFile);
if (!(file instanceof XmlFile)) continue;
PsiDirectory directory = file.getContainingDirectory();