diff --git a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java index dda240bf04ed..e805c99d3e20 100644 --- a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationProducer.java @@ -11,10 +11,7 @@ import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiManager; +import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiClassUtil; import org.jetbrains.annotations.NotNull; @@ -23,7 +20,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; public class AppletConfigurationProducer extends JavaRuntimeConfigurationProducerBase { - private PsiClass myPsiClass; + private SmartPsiElementPointer myPointer; protected AppletConfigurationProducer() { super(AppletConfigurationType.getInstance()); @@ -31,7 +28,7 @@ public class AppletConfigurationProducer extends JavaRuntimeConfigurationProduce @Override public PsiElement getSourceElement() { - return myPsiClass; + return myPointer == null ? null : myPointer.getElement(); } @Override @@ -40,12 +37,13 @@ public class AppletConfigurationProducer extends JavaRuntimeConfigurationProduce if (location == null) return null; final Project project = location.getProject(); final PsiElement element = location.getPsiElement(); - myPsiClass = getAppletClass(element, PsiManager.getInstance(project)); - if (myPsiClass == null) return null; + PsiClass psiClass = getAppletClass(element, PsiManager.getInstance(project)); + if (psiClass == null) return null; + myPointer = SmartPointerManager.createPointer(psiClass); RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); final AppletConfiguration configuration = (AppletConfiguration)settings.getConfiguration(); - configuration.setMainClassName(JavaExecutionUtil.getRuntimeQualifiedName(myPsiClass)); - configuration.setModule(myPsiClass.isValid() ? ModuleUtilCore.findModuleForPsiElement(myPsiClass) : null); + configuration.setMainClassName(JavaExecutionUtil.getRuntimeQualifiedName(psiClass)); + configuration.setModule(psiClass.isValid() ? ModuleUtilCore.findModuleForPsiElement(psiClass) : null); configuration.setGeneratedName(); return settings; } @@ -54,7 +52,6 @@ public class AppletConfigurationProducer extends JavaRuntimeConfigurationProduce return PREFERED; } - @Nullable private static PsiClass getAppletClass(PsiElement element, final PsiManager manager) { while (element != null) {