test support: npe fixed in generate text method action (IDEA-59616)
authorAnton Makeev <Anton.Makeev@jetbrains.com>
Mon, 11 Oct 2010 10:37:49 +0000 (14:37 +0400)
committerAnton Makeev <Anton.Makeev@jetbrains.com>
Mon, 11 Oct 2010 14:47:37 +0000 (18:47 +0400)
java/java-impl/src/com/intellij/testIntegration/BaseGenerateTestSupportMethodAction.java
java/java-impl/src/com/intellij/testIntegration/JavaTestFinder.java
java/java-impl/src/com/intellij/testIntegration/TestIntegrationUtils.java
platform/lang-api/src/com/intellij/testIntegration/TestFinder.java

index 3cc4d9e34623d0ccddf39a45b3bff3e5487821a4..8c8d8c35a2c13043d0cd036624843fdf09513b1d 100644 (file)
@@ -54,10 +54,11 @@ public class BaseGenerateTestSupportMethodAction extends BaseGenerateAction {
     return findTargetClass(editor, file);
   }
 
+  @Nullable
   private static PsiClass findTargetClass(Editor editor, PsiFile file) {
     int offset = editor.getCaretModel().getOffset();
     PsiElement element = file.findElementAt(offset);
-    return TestIntegrationUtils.findOuterClass(element);
+    return element == null ? null : TestIntegrationUtils.findOuterClass(element);
   }
 
   @Override
index 1fa1f99e7b1268a1223015760deb0b93ba78adbd..29af878e5ae7b83e26c0b8147311d88db1fb3a8d 100644 (file)
@@ -29,17 +29,18 @@ import com.intellij.psi.search.GlobalSearchScope;
 import com.intellij.psi.search.PsiShortNamesCache;
 import com.intellij.util.containers.HashSet;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 import java.util.*;
 import java.util.regex.Pattern;
 
 public class JavaTestFinder implements TestFinder {
-  public PsiClass findSourceElement(PsiElement element) {
+  public PsiClass findSourceElement(@NotNull PsiElement element) {
     return TestIntegrationUtils.findOuterClass(element);
   }
 
   @NotNull
-  public Collection<PsiElement> findClassesForTest(PsiElement element) {
+  public Collection<PsiElement> findClassesForTest(@NotNull PsiElement element) {
     PsiClass klass = findSourceElement(element);
     if (klass == null) return Collections.emptySet();
 
@@ -81,7 +82,7 @@ public class JavaTestFinder implements TestFinder {
     return result;
   }
 
-  private boolean isTestSubjectClass(PsiClass klass) {
+  private static boolean isTestSubjectClass(PsiClass klass) {
     if (klass.isEnum()
         || klass.isInterface()
         || klass.isAnnotationType()
@@ -91,7 +92,7 @@ public class JavaTestFinder implements TestFinder {
     return true;
   }
 
-  private List<Pair<String, Integer>> collectPossibleClassNamesWithWeights(String testName) {
+  private static List<Pair<String, Integer>> collectPossibleClassNamesWithWeights(String testName) {
     String[] words = NameUtil.splitNameIntoWords(testName);
     List<Pair<String, Integer>> result = new ArrayList<Pair<String, Integer>>();
 
@@ -106,7 +107,7 @@ public class JavaTestFinder implements TestFinder {
   }
 
   @NotNull
-  public Collection<PsiElement> findTestsForClass(PsiElement element) {
+  public Collection<PsiElement> findTestsForClass(@NotNull PsiElement element) {
     PsiClass klass = findSourceElement(element);
     if (klass == null) return Collections.emptySet();
 
@@ -157,19 +158,20 @@ public class JavaTestFinder implements TestFinder {
     return result;
   }
 
-  private Integer calcTestNameProximity(String klassName, String testName) {
+  private static Integer calcTestNameProximity(String klassName, String testName) {
     int posProximity = testName.indexOf(klassName);
     int sizeProximity = testName.length() - klassName.length();
 
     return posProximity + sizeProximity;
   }
 
+  @Nullable
   private static Module getModule(PsiElement element) {
     ProjectFileIndex index = ProjectRootManager.getInstance(element.getProject()).getFileIndex();
     return index.getModuleForFile(element.getContainingFile().getVirtualFile());
   }
 
-  public boolean isTest(PsiElement element) {
+  public boolean isTest(@NotNull PsiElement element) {
     return TestIntegrationUtils.isTest(element);
   }
 }
index 0ae830a98b67101fc85253b0480721c5aef22faf..9ebfab0186561cc8462144c055ba037860e5e23b 100644 (file)
@@ -35,6 +35,7 @@ import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.util.PsiTreeUtil;
 import com.intellij.refactoring.util.classMembers.MemberInfo;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import java.io.IOException;
@@ -47,17 +48,17 @@ public class TestIntegrationUtils {
 
   public enum MethodKind {
     SET_UP("setUp") {
-      public FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework) {
+      public FileTemplateDescriptor getFileTemplateDescriptor(@NotNull TestFramework framework) {
         return framework.getSetUpMethodFileTemplateDescriptor();
       }
     },
     TEAR_DOWN("tearDown") {
-      public FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework) {
+      public FileTemplateDescriptor getFileTemplateDescriptor(@NotNull TestFramework framework) {
         return framework.getTearDownMethodFileTemplateDescriptor();
       }
     },
     TEST("test") {
-      public FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework) {
+      public FileTemplateDescriptor getFileTemplateDescriptor(@NotNull TestFramework framework) {
         return framework.getTestMethodFileTemplateDescriptor();
       }
     };
@@ -71,15 +72,16 @@ public class TestIntegrationUtils {
       return myDefaultName;
     }
 
-    public abstract FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework);
+    public abstract FileTemplateDescriptor getFileTemplateDescriptor(@NotNull TestFramework framework);
   }
 
-  public static boolean isTest(PsiElement element) {
+  public static boolean isTest(@NotNull PsiElement element) {
     PsiClass klass = findOuterClass(element);
     return klass != null && TestUtil.isTestClass(klass);
   }
 
-  public static PsiClass findOuterClass(PsiElement element) {
+  @Nullable
+  public static PsiClass findOuterClass(@NotNull PsiElement element) {
     PsiClass result = PsiTreeUtil.getParentOfType(element, PsiClass.class, false);
     if (result == null) {
        final PsiFile containingFile = element.getContainingFile();
index 3036e9be8feb2a7118e4c857693f05ecff0c9672..d956d465398e8b1bc41239cc47f3282dc88a0285 100644 (file)
@@ -27,12 +27,12 @@ public interface TestFinder {
   ExtensionPointName<TestFinder> EP_NAME = ExtensionPointName.create("com.intellij.testFinder");
 
   @Nullable
-  PsiElement findSourceElement(PsiElement from);
+  PsiElement findSourceElement(@NotNull PsiElement from);
 
   @NotNull
-  Collection<PsiElement> findTestsForClass(PsiElement element);
+  Collection<PsiElement> findTestsForClass(@NotNull PsiElement element);
   @NotNull
-  Collection<PsiElement> findClassesForTest(PsiElement element);
+  Collection<PsiElement> findClassesForTest(@NotNull PsiElement element);
 
-  boolean isTest(PsiElement element);
+  boolean isTest(@NotNull PsiElement element);
 }