mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-79403 Groovy: Throwable at GrIntroduceConstantDialog.getTargetClass() on introducing a constant to a non-existent class
This commit is contained in:
+13
-5
@@ -16,6 +16,8 @@
|
||||
package org.jetbrains.plugins.groovy.refactoring.introduce.constant;
|
||||
|
||||
import com.intellij.ide.util.*;
|
||||
import com.intellij.openapi.application.AccessToken;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.event.DocumentAdapter;
|
||||
import com.intellij.openapi.editor.event.DocumentEvent;
|
||||
@@ -348,7 +350,7 @@ public class GrIntroduceConstantDialog extends DialogWrapper
|
||||
PsiClass newClass = myDefaultTargetClass;
|
||||
|
||||
if (myDefaultTargetClass == null ||
|
||||
!"".equals(targetClassName) && !Comparing.strEqual(targetClassName, myDefaultTargetClass.getQualifiedName())) {
|
||||
!targetClassName.isEmpty() && !Comparing.strEqual(targetClassName, myDefaultTargetClass.getQualifiedName())) {
|
||||
final Module module = ModuleUtil.findModuleForPsiElement(myContext.place);
|
||||
newClass = JavaPsiFacade.getInstance(myContext.project).findClass(targetClassName, module.getModuleScope());
|
||||
if (newClass == null) {
|
||||
@@ -405,7 +407,7 @@ public class GrIntroduceConstantDialog extends DialogWrapper
|
||||
String fieldName = getName();
|
||||
final JavaPsiFacade facade = JavaPsiFacade.getInstance(myContext.project);
|
||||
|
||||
if ("".equals(fieldName)) {
|
||||
if (fieldName == null || fieldName.isEmpty()) {
|
||||
return RefactoringBundle.message("no.field.name.specified");
|
||||
}
|
||||
|
||||
@@ -414,7 +416,7 @@ public class GrIntroduceConstantDialog extends DialogWrapper
|
||||
}
|
||||
|
||||
final String targetClassName = getTargetClassName();
|
||||
if (myDefaultTargetClass == null && "".equals(targetClassName)) {
|
||||
if (myDefaultTargetClass == null && targetClassName.isEmpty()) {
|
||||
return GroovyRefactoringBundle.message("target.class.is.not.specified");
|
||||
}
|
||||
|
||||
@@ -445,8 +447,14 @@ public class GrIntroduceConstantDialog extends DialogWrapper
|
||||
if (psiDirectory == null) return null;
|
||||
final String shortName = StringUtil.getShortName(qualifiedName);
|
||||
final String fileName = shortName + NewGroovyActionBase.GROOVY_EXTENSION;
|
||||
final GroovyFile file = (GroovyFile)GroovyTemplatesFactory.createFromTemplate(psiDirectory, shortName, fileName, "GroovyClass.groovy");
|
||||
return file.getTypeDefinitions()[0];
|
||||
final AccessToken lock = ApplicationManager.getApplication().acquireWriteActionLock(GrIntroduceConstantDialog.class);
|
||||
try {
|
||||
final GroovyFile file = (GroovyFile)GroovyTemplatesFactory.createFromTemplate(psiDirectory, shortName, fileName, "GroovyClass.groovy");
|
||||
return file.getTypeDefinitions()[0];
|
||||
}
|
||||
finally {
|
||||
lock.finish();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user