IDEA-79403 Groovy: Throwable at GrIntroduceConstantDialog.getTargetClass() on introducing a constant to a non-existent class

This commit is contained in:
Maxim.Medvedev
2012-01-10 15:41:23 +04:00
parent 61b0b80c8f
commit fb93f347e6
@@ -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();
}
}
}