Skip to content

Commit

Permalink
change import handling (#491)
Browse files Browse the repository at this point in the history
* change import handling
* Handle exceptions better. Now every exception inheriting from Exception will be turned into a Problem.
  • Loading branch information
matozoid committed Oct 8, 2016
1 parent 0b7a19a commit 731c46d
Show file tree
Hide file tree
Showing 30 changed files with 857 additions and 406 deletions.
Expand Up @@ -22,8 +22,8 @@
package com.github.javaparser;

import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.ImportDeclaration;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.imports.ImportDeclaration;
import com.github.javaparser.ast.body.BodyDeclaration;
import com.github.javaparser.ast.comments.CommentsCollection;
import com.github.javaparser.ast.expr.AnnotationExpr;
Expand Down Expand Up @@ -93,10 +93,8 @@ public <N extends Node> ParseResult<N> parse(ParseStart<N> start, Provider provi
commentsInserter.insertComments(resultNode, comments.copy().getComments());

return new ParseResult<>(Optional.of(resultNode), parser.problems, Optional.of(astParser.getTokens()), Optional.of(astParser.getCommentsCollection()));
} catch (ParseException e) {
} catch (Exception e) {
return new ParseResult<>(e);
} catch (TokenMgrException e) {
return new ParseResult<>(e);
} finally {
try {
provider.close();
Expand Down
@@ -1,7 +1,7 @@
package com.github.javaparser;

import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.ImportDeclaration;
import com.github.javaparser.ast.imports.ImportDeclaration;
import com.github.javaparser.ast.body.BodyDeclaration;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.expr.Expression;
Expand Down
Expand Up @@ -21,21 +21,12 @@

package com.github.javaparser.ast;

import static com.github.javaparser.ast.expr.NameExpr.*;
import static com.github.javaparser.utils.Utils.ensureNotNull;

import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
import java.util.stream.Collectors;

import com.github.javaparser.ast.expr.NameExpr;
import com.github.javaparser.utils.ClassUtils;
import com.github.javaparser.Range;
import com.github.javaparser.ast.body.*;
import com.github.javaparser.ast.comments.Comment;
import com.github.javaparser.ast.comments.JavadocComment;
import com.github.javaparser.ast.expr.NameExpr;
import com.github.javaparser.ast.imports.*;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
import com.github.javaparser.utils.ClassUtils;
Expand All @@ -45,6 +36,7 @@
import java.util.List;
import java.util.stream.Collectors;

import static com.github.javaparser.ast.expr.NameExpr.name;
import static com.github.javaparser.utils.Utils.ensureNotNull;

/**
Expand Down Expand Up @@ -248,11 +240,10 @@ else if (clazz.isArray() && !ClassUtils.isPrimitiveOrWrapper(clazz.getComponentT
* @return this, the {@link CompilationUnit}
*/
public CompilationUnit addImport(String name, boolean isStatic, boolean isAsterisk) {
if (getImports().stream().anyMatch(i -> i.getName().toString().equals(name)))
final ImportDeclaration importDeclaration = ImportDeclaration.create(Range.UNKNOWN, name(name), isStatic, isAsterisk);
if (getImports().stream().anyMatch(i -> i.toString().equals(importDeclaration.toString())))
return this;
else {
ImportDeclaration importDeclaration = new ImportDeclaration(name(name), isStatic,
isAsterisk);
getImports().add(importDeclaration);
importDeclaration.setParentNode(this);
return this;
Expand Down

This file was deleted.

Expand Up @@ -82,4 +82,7 @@ public static NameExpr name(String qualifiedName) {
return ret;
}

public String getQualifiedName() {
return name;
}
}
Expand Up @@ -62,4 +62,8 @@ public QualifiedNameExpr setQualifier(final NameExpr qualifier) {
setAsParentNodeOf(this.qualifier);
return this;
}

public String getQualifiedName() {
return qualifier.getQualifiedName() + "." + getName();
}
}
@@ -0,0 +1,29 @@
package com.github.javaparser.ast.imports;

import com.github.javaparser.Range;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

/**
* A stray semicolon between the imports.
* This isn't described in the JLS, but accepted by most or all tools that parse Java.
*/
public class EmptyImportDeclaration extends ImportDeclaration {
@Override
public <R, A> R accept(GenericVisitor<R, A> v, A arg) {
return v.visit(this, arg);
}

@Override
public <A> void accept(VoidVisitor<A> v, A arg) {
v.visit(this, arg);
}

public EmptyImportDeclaration() {
this(Range.UNKNOWN);
}

public EmptyImportDeclaration(Range range) {
super(range);
}
}

0 comments on commit 731c46d

Please sign in to comment.