Skip to content

Commit

Permalink
moving HasDirectlyAnnotation to Helper
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomassetti committed Aug 15, 2018
1 parent 999c27a commit 2402d77
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 7 deletions.
Expand Up @@ -17,6 +17,13 @@
package com.github.javaparser.symbolsolver.javaparsermodel.declarations;

import com.github.javaparser.ast.*;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
import com.github.javaparser.resolution.UnsolvedSymbolException;
import com.github.javaparser.resolution.declarations.ResolvedTypeDeclaration;
import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory;
import com.github.javaparser.symbolsolver.model.resolution.SymbolReference;
import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;

import java.util.EnumSet;
import java.util.Optional;
Expand Down Expand Up @@ -82,4 +89,20 @@ static String getClassName(String base, Node container) {
}
return base;
}

static boolean hasDirectlyAnnotation(NodeWithAnnotations<?> nodeWithAnnotations, TypeSolver typeSolver,
String canonicalName) {
for (AnnotationExpr annotationExpr : nodeWithAnnotations.getAnnotations()) {
SymbolReference<ResolvedTypeDeclaration> ref = JavaParserFactory.getContext(annotationExpr, typeSolver)
.solveType(annotationExpr.getName().getId(), typeSolver);
if (ref.isSolved()) {
if (ref.getCorrespondingDeclaration().getQualifiedName().endsWith(canonicalName)) {
return true;
}
} else {
throw new UnsolvedSymbolException(annotationExpr.getName().getId());
}
}
return false;
}
}
Expand Up @@ -197,12 +197,7 @@ public List<ResolvedConstructorDeclaration> getConstructors() {

@Override
public boolean hasDirectlyAnnotation(String canonicalName) {
for (AnnotationExpr annotationExpr : wrappedNode.getAnnotations()) {
if (solveType(annotationExpr.getName().getId(), typeSolver).getCorrespondingDeclaration().getQualifiedName().equals(canonicalName)) {
return true;
}
}
return false;
return Helper.hasDirectlyAnnotation(wrappedNode, typeSolver, canonicalName);
}

@Override
Expand Down
Expand Up @@ -21,6 +21,7 @@
import com.github.javaparser.ast.body.BodyDeclaration;
import com.github.javaparser.ast.body.EnumConstantDeclaration;
import com.github.javaparser.ast.body.FieldDeclaration;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.resolution.MethodUsage;
import com.github.javaparser.resolution.UnsolvedSymbolException;
Expand Down Expand Up @@ -102,7 +103,7 @@ public boolean isType() {

@Override
public boolean hasDirectlyAnnotation(String canonicalName) {
throw new UnsupportedOperationException();
return Helper.hasDirectlyAnnotation(wrappedNode, typeSolver, canonicalName);
}

@Override
Expand Down

0 comments on commit 2402d77

Please sign in to comment.