From fb93f347e6df56e18442f4beaccb7fd479dee42e Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Tue, 10 Jan 2012 15:41:23 +0400 Subject: [PATCH] IDEA-79403 Groovy: Throwable at GrIntroduceConstantDialog.getTargetClass() on introducing a constant to a non-existent class --- .../constant/GrIntroduceConstantDialog.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java index d63419b2d404..1429536c8ff7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java @@ -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(); + } } }