Skip to content

Commit f7c9bbc

Browse files
author
Henady Zakalusky
committed
added "Assert is not null" action.
1 parent 1717415 commit f7c9bbc

File tree

8 files changed

+93
-7
lines changed

8 files changed

+93
-7
lines changed

src/main/java/com/bruce/intellijplugin/generatesetter/CommonConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class CommonConstants {
2424
public static final String GENERATE_ACCESSORS_METHOD = "Generate accessors chain call";
2525
public static final String GENERATE_SETTER_METHOD_NO_DEFAULT_VALUE = "Generate all setter no default value";
2626
public static final String ASSERT_ALL_PROPS = "Assert all getters";
27+
public static final String ASSERT_NOT_NULL = "Assert is not null";
2728
public static final String GENERATE_CONVERTER_FROM_METHOD = "Generate setter getter converter";
2829
public static final String BUILDER_CONVERTER_FROM_METHOD = "Generate builder getter converter";
2930
public static final String BUILDER_METHOD_NAME = "builder";

src/main/java/com/bruce/intellijplugin/generatesetter/actions/AssertAllGetterAction.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ enum TestEngine {ASSERT, JUNIT4, JUNIT5, TESTNG, ASSERTJ}
8080
.put(ASSERTJ, "assertThat")
8181
.build();
8282

83-
private Project project;
84-
private PsiFile containingFile;
83+
protected Project project;
84+
protected PsiFile containingFile;
8585

8686
public AssertAllGetterAction() {
8787
setGenerateAllHandler(new GenerateAllAssertsHandlerAdapter(true));
@@ -118,14 +118,19 @@ public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull Psi
118118

119119
class GenerateAllAssertsHandlerAdapter extends GenerateAllHandlerAdapter {
120120
private final boolean generateWithDefaultValues;
121-
private final Set<TestEngine> currentFileImportedEngines = new HashSet<>();
122-
private TestEngine currentFileTestEngine = TestEngine.ASSERT;
121+
122+
protected final Set<TestEngine> currentFileImportedEngines = new HashSet<>();
123+
protected TestEngine currentFileTestEngine = TestEngine.ASSERT;
123124

124125
public GenerateAllAssertsHandlerAdapter(boolean generateWithDefaultValues) {
125126
this.generateWithDefaultValues = generateWithDefaultValues;
126127
}
127128

128-
private TestEngine detectCurrentTestEngine(Project project, PsiFile containingFile) {
129+
public void detectCurrentTestEngine(Project project, PsiFile containingFile) {
130+
currentFileTestEngine = detectCurrentTestEngineInternal(project, containingFile);
131+
}
132+
133+
private TestEngine detectCurrentTestEngineInternal(Project project, PsiFile containingFile) {
129134

130135
if (containingFile instanceof PsiJavaFile) {
131136
PsiJavaFile javaFile = (PsiJavaFile) containingFile;
@@ -246,7 +251,7 @@ public String formatLine(String line) {
246251
value = "";
247252
}
248253

249-
currentFileTestEngine = detectCurrentTestEngine(project, containingFile);
254+
detectCurrentTestEngine(project, containingFile);
250255

251256
switch (currentFileTestEngine) {
252257
case JUNIT4:
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.bruce.intellijplugin.generatesetter.actions;
2+
3+
import com.bruce.intellijplugin.generatesetter.CommonConstants;
4+
import com.google.common.collect.ImmutableMap;
5+
import com.intellij.psi.PsiMethod;
6+
import org.jetbrains.annotations.NotNull;
7+
8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.Set;
11+
12+
import static com.bruce.intellijplugin.generatesetter.actions.AssertAllGetterAction.TestEngine.ASSERT;
13+
import static com.bruce.intellijplugin.generatesetter.actions.AssertAllGetterAction.TestEngine.ASSERTJ;
14+
import static com.bruce.intellijplugin.generatesetter.actions.AssertAllGetterAction.TestEngine.JUNIT4;
15+
import static com.bruce.intellijplugin.generatesetter.actions.AssertAllGetterAction.TestEngine.JUNIT5;
16+
import static com.bruce.intellijplugin.generatesetter.actions.AssertAllGetterAction.TestEngine.TESTNG;
17+
18+
public class AssertNotNullAction extends AssertAllGetterAction {
19+
// imports to add when generating asserts.
20+
private static final Map<TestEngine, String> engineImports = ImmutableMap.<TestEngine, String>builder()
21+
.put(JUNIT4, "static org.junit.Assert.assertNotNull")
22+
.put(JUNIT5, "static org.junit.jupiter.api.Assertions.assertNotNull")
23+
.put(TESTNG, "static org.testng.Assert.assertNotNull")
24+
.put(ASSERTJ, "static org.assertj.core.api.Assertions.assertThat")
25+
.put(ASSERT, "java.util.Objects")
26+
.build();
27+
28+
private final GenerateAllAssertsHandlerAdapter generateAllHandler;
29+
30+
public AssertNotNullAction() {
31+
generateAllHandler = new GenerateAllAssertsHandlerAdapter(true);
32+
setGenerateAllHandler(generateAllHandler);
33+
}
34+
35+
@NotNull
36+
@Override
37+
public String getText() {
38+
return CommonConstants.ASSERT_NOT_NULL;
39+
}
40+
41+
@NotNull
42+
protected String generateStringForNoParam(String generateName,
43+
List<PsiMethod> methodList, String splitText,
44+
Set<String> newImportList, boolean hasGuava) {
45+
generateAllHandler.detectCurrentTestEngine(project, containingFile);
46+
47+
TestEngine currentFileTestEngine = generateAllHandler.currentFileTestEngine;
48+
Set<TestEngine> currentFileImportedEngines = generateAllHandler.currentFileImportedEngines;
49+
50+
if (!currentFileImportedEngines.contains(currentFileTestEngine)) {
51+
newImportList.add(engineImports.get(currentFileTestEngine));
52+
}
53+
54+
switch (currentFileTestEngine) {
55+
case JUNIT4:
56+
case JUNIT5:
57+
case TESTNG:
58+
return splitText + "assertNotNull(" + generateName + ");";
59+
case ASSERTJ:
60+
return splitText + "assertThat(" + generateName + ").isNotNull();";
61+
case ASSERT:
62+
return splitText + "assert " + generateName + " != null";
63+
default:
64+
throw new Error("Unknown case: " + currentFileTestEngine);
65+
}
66+
}
67+
}

src/main/java/com/bruce/intellijplugin/generatesetter/actions/GenerateAllSetterBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ private void handleWithLocalVariable(PsiLocalVariable localVariable,
446446
}
447447

448448
@NotNull
449-
private String generateStringForNoParam(String generateName,
449+
protected String generateStringForNoParam(String generateName,
450450
List<PsiMethod> methodList, String splitText,
451451
Set<String> newImportList, boolean hasGuava) {
452452
StringBuilder builder = new StringBuilder();

src/main/resources/META-INF/plugin.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,11 @@
159159
<category>GenerateAllSetter</category>
160160
</intentionAction>
161161

162+
<intentionAction>
163+
<className>com.bruce.intellijplugin.generatesetter.actions.AssertNotNullAction</className>
164+
<category>GenerateAllSetter</category>
165+
</intentionAction>
166+
162167
<intentionAction>
163168
<className>com.bruce.intellijplugin.generatesetter.actions.AssertAllGetterAction</className>
164169
<category>GenerateAllSetter</category>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
User user = userService.findByName("admin");
2+
assertNotNull(user);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
User user = userService.findByName("admin");
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<html>
2+
<body>
3+
Generates assertNotNull call depends on the module's testing engine.
4+
</body>
5+
</html>

0 commit comments

Comments
 (0)