Skip to content

Commit

Permalink
perform duplicate checking on all addImport methods
Browse files Browse the repository at this point in the history
  • Loading branch information
signed committed Jan 3, 2019
1 parent 147bb9c commit d3aa744
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 11 deletions.
Expand Up @@ -31,6 +31,7 @@
import java.util.List;
import java.util.Map;

import static com.github.javaparser.JavaParser.parseImport;
import static com.github.javaparser.ast.Modifier.Keyword.PRIVATE;
import static com.github.javaparser.utils.Utils.EOL;
import static org.junit.jupiter.api.Assertions.*;
Expand Down Expand Up @@ -65,6 +66,34 @@ void typesInSubPackagesOfTheJavaLangPackageRequireExplicitImports() {
assertEquals("import java.lang.annotation.ElementType;"+ EOL, cu.getImport(0).toString());
}

@Test
void doNotAddDuplicateImportsByClass() {
cu.addImport(Map.class);
cu.addImport(Map.class);
assertEquals(1, cu.getImports().size());
}

@Test
void doNotAddDuplicateImportsByString() {
cu.addImport(Map.class);
cu.addImport("java.util.Map");
assertEquals(1, cu.getImports().size());
}

@Test
void doNotAddDuplicateImportsByStringAndFlags() {
cu.addImport(Map.class);
cu.addImport("java.util.Map", false, false);
assertEquals(1, cu.getImports().size());
}

@Test
void doNotAddDuplicateImportsByImportDeclaration() {
cu.addImport(Map.class);
cu.addImport(parseImport("import java.util.Map;"));
assertEquals(1, cu.getImports().size());
}

@Test
void testAddImportArrayTypes() {
cu.addImport(CompilationUnit[][][].class);
Expand Down
Expand Up @@ -58,8 +58,6 @@
import static com.github.javaparser.ast.Modifier.createModifierList;
import static com.github.javaparser.utils.CodeGenerationUtils.subtractPaths;
import static com.github.javaparser.utils.Utils.assertNotNull;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.Generated;

/**
* <p>
Expand Down Expand Up @@ -220,8 +218,10 @@ public CompilationUnit setImport(int i, ImportDeclaration imports) {
return this;
}

public CompilationUnit addImport(ImportDeclaration imports) {
getImports().add(imports);
public CompilationUnit addImport(ImportDeclaration importDeclaration) {
if (getImports().stream().noneMatch(im -> im.toString().equals(importDeclaration.toString()))) {
getImports().add(importDeclaration);
}
return this;
}

Expand Down Expand Up @@ -338,13 +338,7 @@ public CompilationUnit addImport(String name, boolean isStatic, boolean isAsteri
i.append(".*");
}
i.append(";");
ImportDeclaration importDeclaration = JavaParser.parseImport(i.toString());
if (getImports().stream().anyMatch(im -> im.toString().equals(importDeclaration.toString())))
return this;
else {
getImports().add(importDeclaration);
return this;
}
return addImport(JavaParser.parseImport(i.toString()));
}

/**
Expand Down

0 comments on commit d3aa744

Please sign in to comment.