Skip to content

Commit 3ddc31d

Browse files
author
Henady Zakalusky
committed
fix for default value with array for generate all setters with default value
- added cases like byte[][] array;
1 parent 80bf255 commit 3ddc31d

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public class Parameters {
3232
private PsiClass returnType;
3333

3434
private boolean isArray;
35+
36+
private int arrayDimensions;
3537

3638

3739
public PsiClass getReturnType() {
@@ -73,4 +75,12 @@ public boolean isArray() {
7375
public void setIsArray(boolean isArray) {
7476
this.isArray = isArray;
7577
}
78+
79+
public void setArrayDimensions(int arrayDimensions) {
80+
this.arrayDimensions = arrayDimensions;
81+
}
82+
83+
public int getArrayDimensions() {
84+
return arrayDimensions;
85+
}
7686
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.intellij.openapi.editor.Editor;
3333
import com.intellij.openapi.project.Project;
3434
import com.intellij.openapi.util.TextRange;
35+
import com.intellij.openapi.util.text.StringUtil;
3536
import com.intellij.psi.PsiClass;
3637
import com.intellij.psi.PsiDeclarationStatement;
3738
import com.intellij.psi.PsiDocumentManager;
@@ -541,7 +542,7 @@ else if (psiClassOfParameter!=null && psiClassOfParameter.isEnum()) {
541542
String realName = paramInfo.getParams().get(0).getRealName();
542543

543544
if (paramInfo.isArray()) {
544-
builder.append("new " + realName + "[0]");
545+
builder.append("new " + realName + StringUtil.repeat("[0]", paramInfo.getArrayDimensions()));
545546
} else {
546547
builder.append("new " + realName + "()");
547548
}
@@ -565,7 +566,7 @@ private static void appendCollectNotEmpty(StringBuilder builder,
565566
Set<String> newImportList) {
566567
builder.append("new ").append(defaultImpl);
567568
if (paramInfo.isArray()) {
568-
builder.append("[0]");
569+
builder.append(StringUtil.repeat("[0]", paramInfo.getArrayDimensions()));
569570
} else {
570571
builder.append("<");
571572
for (int i = 0; i < paramInfo.getParams().size(); i++) {

src/main/java/com/bruce/intellijplugin/generatesetter/utils/PsiToolUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,10 @@ public static boolean checkGuavaExist(Project project, @NotNull PsiElement eleme
5555
public static Parameters extractParamInfo(PsiType psiType) {
5656
String typeFullName = psiType.getCanonicalText();
5757
Parameters info = new Parameters();
58-
if (typeFullName.endsWith("[]")) {
59-
typeFullName = typeFullName.substring(0, typeFullName.length() - 2);
58+
if (psiType.getArrayDimensions() > 0) {
59+
typeFullName = typeFullName.substring(0, typeFullName.indexOf('['));
6060
info.setIsArray(true);
61+
info.setArrayDimensions(psiType.getArrayDimensions());
6162
}
6263
info.setReturnType(PsiTypesUtil.getPsiClass(psiType));
6364
int u = typeFullName.indexOf("<");

0 commit comments

Comments
 (0)